Building management system with adaptive edge processing

ABSTRACT

Systems and methods for building management utilizing adaptive edge processing are disclosed. The building system can store gateway components on storage devices. The gateway components can facilitate communication with a cloud platform and facilitate communication with a physical building device. The building system can identify a computing system of the building that is in communication with the physical building device. The physical building device can store one or more data samples. The building system can deploy the gateway components to the computing system responsive to identifying that the computing system is in communication with the physical building device. The gateway components can cause the computing system to communicate with the physical building device to receive the one or more data samples and cause the computing system to communicate the one or more data samples to the cloud platform.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present disclosure is a continuation of U.S. patent application Ser.No. 17/710,458, filed Mar. 31, 2022, and entitled “BUILDING MANAGEMENTSYSTEM WITH ADAPTIVE EDGE PROCESSING,” which itself claims the benefitof and priority to U.S. Provisional Patent Application No. 63/296,078,filed Jan. 3, 2022, the contents of each of which are herebyincorporated by reference in their entirety for all purposes.

BACKGROUND

The present disclosure relates generally to a building management system(BMS) that operates for a building.

The BMS can operate to collect data from subsystems of a building and/oroperate based on the collected data. In some embodiments, the BMS mayutilize a gateway device. The gateway device may manage the collectionof data points of the subsystems of a building. The gateway device canprovide collected data points of the subsystems to the BMS. The BMS may,in some embodiments, operate based on the collected data and/or push newvalues for data points down to the subsystem through the gateway.

SUMMARY

At least one aspect of the present disclosure is directed to a buildingsystem of a building including one or more storage devices. The one ormore storage devices can instructions that, when executed by one or moreprocessors, cause the one or more processors to perform one or moreoperations. The one or more processors can store one or more gatewaycomponents on the one or more storage devices. The one or more gatewaycomponents can facilitate communication with a cloud platform andfacilitate communication with a physical building device. The one ormore processors can identify a computing system of the building that isin communication with the physical building device. The physicalbuilding device can store one or more data samples. The one or moreprocessors can deploy the one or more gateway components to thecomputing system responsive to identifying that the computing system isin communication with the physical building device. The one or moregateway components can cause the computing system to communicate withthe physical building device to receive the one or more data samples.The one or more gateway components can cause the computing system tocommunicate the one or more data samples to the cloud platform.

In some implementations, the one or more processors can identify one ormore communication protocols of one or more physical building devicesthat collect the one or more data samples. In some implementations, theone or more processors can deploy one or more integration components forthe one or more communication protocols to the computing system to causethe computing system to communicate with the one or more physicalbuilding devices via the one or more communication protocols.

In some implementations, the one or more processors can deploy anadapter service to the computing system, wherein the adapter servicecauses the computing system to communicate with a network engine andreceive the one or more data samples from the network engine, thenetwork engine configured to manage one or more building networks andreceive the one or more data samples from one or more devices of thebuilding via the one or more building networks.

In some implementations, the one or more gateway components can detect anew physical building device connected to the computing system. In someimplementations, the one or more gateway components can search a devicelibrary for a configuration of the new physical building device. In someimplementations, the one or more gateway components can perform at leastone of: implementing the configuration to facilitate communication withthe new physical building device responsive to identifying theconfiguration for the new physical building device in the devicelibrary; or perform a discovery process to discover the configurationfor the new physical building device and store the configuration in thedevice library.

In some implementations, the device library is stored in at least one ofthe cloud platform or on the one or more gateway components. In someimplementations, the device library is distributed across a plurality ofinstances of the one or more gateway components in a plurality ofdifferent buildings. In some implementations, the one or more gatewaycomponents include a building service configured to generate data basedon the one or more data samples.

In some implementations, the one or more processors can identify one ormore requirements for the building service. The one or more requirementscan indicate at least one of processing resources, storage resources,data availability, or a presence of another building service. In someimplementations, the one or more processors can determine that thecomputing system meets the one or more requirements. In someimplementations, the one or more processors can deploy the buildingservice to the computing system responsive to determining that thecomputing system meets the one or more requirements.

In some implementations, the one or more processors can identify thatthe one or more requirements for the building service are no longer metby the computing system. In some implementations, the one or moreprocessors can move the building service from the computing system to asecond computing system that meets the one or more requirements of thebuilding service. In some implementations, the one or more gatewaycomponents cause the computing system to receive one or more values forcontrol points of the physical building device; and communicate the oneor more values to the control points of the physical building device viathe one or more gateway components.

At least one other aspect is directed to a method implemented by abuilding system of a building including one or more storage devices. Themethod can be performed, for example, by one or more processors of thebuilding system. The method can include storing one or more gatewaycomponents on the one or more storage devices. The one or more gatewaycomponents can be configured to facilitate communication with a cloudplatform and facilitate communication with a physical building device.The method can include identifying a computing system of the buildingthat is in communication with the physical building device, the physicalbuilding device storing one or more data samples. The method can includedeploying the one or more gateway components to the computing systemresponsive to identifying that the computing system is in communicationwith the physical building device. The one or more gateway componentscan cause the computing system to communicate with the physical buildingdevice to receive the one or more data samples. The one or more gatewaycomponents can cause the computing system to communicate the one or moredata samples to the cloud platform.

In some implementations, the method can include identifying one or morecommunication protocols of one or more physical building devices thatcollect the one or more data samples. In some implementations, themethod can include deploying one or more integration components for theone or more communication protocols to the computing system to cause thecomputing system to communicate with the one or more physical buildingdevices via the one or more communication protocols.

In some implementations, the method can include deploying an adapterservice to the computing system. In some implementations, the adapterservice causes the computing system to communicate with a network engineand receive the one or more data samples from the network engine. Thenetwork engine can be configured to manage one or more building networksand receive the one or more data samples from one or more devices of thebuilding via the one or more building networks.

In some implementations, the one or more gateway components can detect anew physical building device connected to the computing system. In someimplementations, the one or more gateway components can search a devicelibrary for a configuration of the new physical building device. In someimplementations, the one or more gateway components can perform at leastone of: implementing the configuration to facilitate communication withthe new physical building device responsive to identifying theconfiguration for the new physical building device in the devicelibrary; or perform a discovery process to discover the configurationfor the new physical building device and store the configuration in thedevice library.

In some implementations, the device library is stored in at least one ofthe cloud platform or on the one or more gateway components. In someimplementations, the device library is distributed across a plurality ofinstances of the one or more gateway components in a plurality ofdifferent buildings. In some implementations, the one or more gatewaycomponents include a building service configured to generate data basedon the one or more data samples.

In some implementations, the method can include identifying one or morerequirements for the building service, the one or more requirementsindicating at least one of processing resources, storage resources, dataavailability, or a presence of another building service. In someimplementations, the method can include determining, by the one or moreprocessors, that the computing system meets the one or morerequirements. In some implementations, the method can include deployingthe building service to the computing system responsive to determiningthat the computing system meets the one or more requirements.

In some implementations, the method can include identifying that the oneor more requirements for the building service are no longer met by thecomputing system. In some implementations, the method can include movingthe building service from the computing system to a second computingsystem that meets the one or more requirements of the building service.In some implementations, the one or more gateway components can causethe computing system to receive one or more values for control points ofthe physical building device. In some implementations, the one or moregateway components can cause the computing system to communicate the oneor more values to the control points of the physical building device viathe one or more gateway components.

At least one other aspect of the present disclosure is directed to yetanother building system of a building including one or more storagedevices. The one or more storage devices can store instructions that,when executed by one or more processors, cause the one or moreprocessors to perform one or more operations. The one or more processorscan store one or more gateway components on the one or more storagedevices. The one or more gateway components can be configured tofacilitate communication between a cloud platform and a physicalbuilding device that the one or more gateway components are deployed on.The one or more gateway components can provide an interface with one ormore existing components of the physical building device. The one ormore processors can deploy the one or more gateway components to abuilding management system (BMS) server of the building. The BMS servercan be configured to receive one or more data samples from one or morephysical building devices of the building and execute one or more BMSapplications based on the one or more data samples. The one or moregateway components can interface with one or more existing components ofthe BMS server, receive the one or more data samples based on the one ormore gateway components interfacing with the one or more existingcomponents of the BMS server, and communicate the one or more datasamples to the cloud platform.

In some implementations, the one or more gateway components cause theBMS server to receive one or more values for control points of thephysical building device; and communicate the one or more values to thecontrol points of the physical building device via the one or moregateway components. In some implementations, the one or more gatewaycomponents cause the BMS server to receive the one or more values forthe control points of the physical building device from at least one ofthe cloud platform or a local control algorithm run locally on the BMSserver via the one or more gateway components.

In some implementations, the one or more processors can identify one ormore communication protocols of the one or more physical buildingdevices that collect the one or more data samples; and deploy one ormore integration components for the one or more communication protocolsto the BMS server to cause the BMS server to communicate with the one ormore physical building devices via the one or more communicationprotocols.

In some implementations, the one or more processors can deploy anadapter service to the BMS server. The adapter service can cause the BMSserver to communicate with a network engine and receive the one or moredata samples from the network engine. The network engine can beconfigured to manage one or more building networks and receive the oneor more data samples from one or more devices of the building via theone or more building networks.

In some implementations, the one or more gateway components can detect anew physical building device connected to the BMS server. In someimplementations, the one or more gateway components can search a devicelibrary for a configuration of the new physical building device. In someimplementations, the one or more gateway components can perform at leastone of: implementing the configuration to facilitate communication withthe new physical building device responsive to identifying theconfiguration for the new physical building device in the devicelibrary; or perform a discovery process to discover the configurationfor the new physical building device and store the configuration in thedevice library.

In some implementations, the device library is stored in at least one ofthe cloud platform or on the one or more gateway components. In someimplementations, the one or more gateway components include a buildingservice configured to generate data based on the one or more datasamples. In some implementations, the one or more processors canidentify one or more requirements for the building service, the one ormore requirements indicating at least one of processing resources,storage resources, data availability, or a presence of another buildingservice; and deploy the building service to the BMS server responsive todetermining that the BMS server meets one or more requirements for thebuilding service.

In some implementations, the one or more processors to can identify thatthe one or more requirements for the building service are no longer metby the BMS server; and remove the building service from the BMS server.

At least one other aspect of the present disclosure is directed to yetanother method. The method can be implemented by a building system of abuilding including one or more storage devices. The method may beperformed, for example, by one or more processors of the buildingsystem. The method can include storing, one or more gateway componentson the one or more storage devices. The one or more gateway componentscan be configured to facilitate communication between a cloud platformand a physical building device that the one or more gateway componentsare deployed on, the one or more gateway components providing aninterface with one or more existing components of the physical buildingdevice. The method can include deploying the one or more gatewaycomponents to a building management system (BMS) server of the building,the BMS server configured to receive one or more data samples from oneor more physical building devices of the building and execute one ormore BMS applications based on the one or more data samples. The one ormore gateway components can interface with one or more existingcomponents of the BMS server, receive the one or more data samples basedon the one or more gateway components interfacing with the one or moreexisting components of the BMS server, and communicate the one or moredata samples to the cloud platform.

In some implementations, the one or more gateway components cause theBMS server to receive one or more values for control points of thephysical building device; and communicate the one or more values to thecontrol points of the physical building device via the one or moregateway components. In some implementations, the one or more gatewaycomponents cause the BMS server to receive the one or more values forthe control points of the physical building device from at least one ofthe cloud platform or a local control algorithm run locally on the BMSserver via the one or more gateway components.

In some implementations, the method can include identifying, by the oneor more processors, one or more communication protocols of the one ormore physical building devices that collect the one or more datasamples. In some implementations, the method can include deploying oneor more integration components for the one or more communicationprotocols to the BMS server to cause the BMS server to communicate withthe one or more physical building devices via the one or morecommunication protocols.

In some implementations, the method can include deploying an adapterservice to the BMS server. In some implementations, the adapter servicecan cause the BMS server to communicate with a network engine andreceive the one or more data samples from the network engine. In someimplementations, the network engine can be configured to manage one ormore building networks and receive the one or more data samples from oneor more devices of the building via the one or more building networks.

In some implementations, the one or more gateway components can detect anew physical building device connected to the BMS server. In someimplementations, the one or more gateway components can search a devicelibrary for a configuration of the new physical building device. In someimplementations, the one or more gateway components can perform at leastone of: implementing the configuration to facilitate communication withthe new physical building device responsive to identifying theconfiguration for the new physical building device in the devicelibrary; or perform a discovery process to discover the configurationfor the new physical building device and store the configuration in thedevice library.

In some implementations, the device library is stored in at least one ofthe cloud platform or on the one or more gateway components. In someimplementations, the one or more gateway components include a buildingservice configured to generate data based on the one or more datasamples. In some implementations, the method can include identifying oneor more requirements for the building service, the one or morerequirements indicating at least one of processing resources, storageresources, data availability, or a presence of another building service.In some implementations, the method can include deploying the buildingservice to the BMS server responsive to determining that the BMS servermeets one or more requirements for the building service.

In some implementations, the method can include identifying that the oneor more requirements for the building service are no longer met by theBMS server. In some implementations, the method can include removing, bythe one or more processors, the building service from the BMS server.

At least one other aspect of the present disclosure is directed toanother building system of a building including one or more storagedevices. The one or more storage devices can instructions that, whenexecuted by one or more processors, cause the one or more processors toperform one or more operations. The one or more processors can store oneor more gateway components on the one or more storage devices. The oneor more gateway components can be configured to facilitate communicationbetween a cloud platform and a building device that the one or moregateway components are deployed on. The one or more gateway componentscan provide an interface with one or more existing components of thebuilding device. The one or more processors deploy the one or moregateway components to a building network engine. The building networkengine can implement one or more local communications networks for oneor more building devices of the building and receive one or more datasamples from the one or more building devices. The one or more gatewaycomponents interface with the one or more existing components of thebuilding network engine, receive the one or more data samples based onthe one or more gateway components interfacing with the one or moreexisting components of the building network engine, and communicate theone or more data samples to the cloud platform.

In some implementations, the one or more gateway components can receiveone or more values for control points of the building device. In someimplementations, the one or more gateway components can communicate theone or more values to the control points of the building device via theone or more gateway components. In some implementations, the one or moregateway components can the building network engine to receive the one ormore values for the control points of the building device from at leastone of the cloud platform.

In some implementations, the one or more processors can deploy anadapter service to the building network engine. In some implementations,the adapter service causes the building network engine to communicatewith the cloud platform and provide the one or more data samples to thecloud platform. In some implementations, the adapter service causes thebuilding network engine to communicate with a BMS server and provide theone or more data samples to the BMS server. In some implementations, theadapter service causes the building network engine to communicate with acomputing device of the building.

In some implementations, the one or more gateway components can detect anew physical building device connected to the building network engine.In some implementations, the one or more gateway components can search adevice library for a configuration of the new physical building device.In some implementations, the one or more gateway components can performat least one of: implementing the configuration to facilitatecommunication with the new physical building device responsive toidentifying the configuration for the new physical building device inthe device library; or perform a discovery process to discover theconfiguration for the new physical building device and store theconfiguration in the device library.

In some implementations, the device library is stored in at least one ofthe cloud platform or on the one or more gateway components. In someimplementations, the one or more gateway components include a buildingservice configured to generate data based on the one or more datasamples.

At least one other aspect of the present disclosure is directed toanother method implemented by a building system of a building includingone or more storage devices. The method can include storing one or moregateway components on the one or more storage devices. The one or moregateway components can facilitate communication between a cloud platformand a building device that the one or more gateway components aredeployed on. The one or more gateway components can provide an interfacewith one or more existing components of the building device. The methodcan include deploying the one or more gateway components to a buildingnetwork engine. The building network engine can implement one or morelocal communications networks for one or more building devices of thebuilding and receive one or more data samples from the one or morebuilding devices. The one or more gateway components interface with theone or more existing components of the building network engine, receivethe one or more data samples based on the one or more gateway componentsinterfacing with the one or more existing components of the buildingnetwork engine, and communicate the one or more data samples to thecloud platform.

In some implementations, the one or more gateway components can receiveone or more values for control points of the building device. In someimplementations, the one or more gateway components can communicate theone or more values to the control points of the building device via theone or more gateway components. In some implementations, the one or moregateway components can cause the building network engine to receive theone or more values for the control points of the building device from atleast one of the cloud platform.

In some implementations, the method can include deploying an adapterservice to the building network engine. In some implementations, theadapter service causes the building network engine to communicate withthe cloud platform and provide the one or more data samples to the cloudplatform. In some implementations, the adapter service causes thebuilding network engine to communicate with a BMS server and provide theone or more data samples to the BMS server. In some implementations, theadapter service causes the building network engine to communicate with acomputing device of the building.

In some implementations, the one or more gateway components can detect anew physical building device connected to the building network engine.In some implementations, the one or more gateway components can search adevice library for a configuration of the new physical building device.In some implementations, the one or more gateway components can performat least one of: implementing the configuration to facilitatecommunication with the new physical building device responsive toidentifying the configuration for the new physical building device inthe device library; or perform a discovery process to discover theconfiguration for the new physical building device and store theconfiguration in the device library. In some implementations, the devicelibrary is stored in at least one of the cloud platform or on the one ormore gateway components. In some implementations, the one or moregateway components include a building service configured to generatedata based on the one or more data samples.

At least one aspect of the present disclosure is directed to buildingsystem of a building including one or more storage devices. The one ormore storage devices can store instructions that, when executed by oneor more processors, cause the one or more processors to perform one ormore operations. The one or more processors can store one or moregateway components on the one or more storage devices. The one or moregateway components can facilitate communication between a cloud platformand a physical building device. The one or more processors can deploythe one or more gateway components to a physical gateway. The physicalgateway configured to communicate with one or more building devices andreceive one or more data samples from the one or more building devices.The one or more gateway components can receive the one or more datasamples and communicate the one or more data samples to the cloudplatform. The one or more processors can identify that a building deviceof the building running one or more services does not meet one or morerequirements for running the one or more services. The one or moreprocessors can cause the one or more services executing on the buildingdevice to be relocated to the physical gateway such that the one or moregateway components execute the one or more services.

In some implementations, the one or more processors can identify one ormore communication protocols of the one or more building devices thatcollect the one or more data samples. In some implementations, the oneor more processors can deploy one or more integration components for theone or more communication protocols to the physical gateway to cause thephysical gateway to communicate with the one or more building devicesvia the one or more communication protocols.

In some implementations, the one or more processors can deploy anadapter service to the physical gateway. In some implementations, theadapter service causes the physical gateway to communicate with anetwork engine and receive the one or more data samples from the networkengine. In some implementations, the network engine can manage one ormore building networks and receive the one or more data samples from oneor more second building devices of the building via the one or morebuilding networks. In some implementations, the adapter service causesthe physical gateway to communicate with the cloud platform andcommunicate the one or more data samples to the cloud platform via theadapter service.

In some implementations, the one or more gateway components can detect anew physical building device connected to the physical gateway. In someimplementations, the one or more gateway components can search a devicelibrary for a configuration of the new physical building device. In someimplementations, the one or more gateway components can perform at leastone of: implementing the configuration to facilitate communication withthe new physical building device responsive to identifying theconfiguration for the new physical building device in the devicelibrary; or perform a discovery process to discover the configurationfor the new physical building device and store the configuration in thedevice library.

In some implementations, the device library is stored in at least one ofthe cloud platform or on the one or more gateway components. In someimplementations, the device library is distributed across a plurality ofinstances of the one or more gateway components in a plurality ofdifferent buildings. In some implementations, one or more gatewaycomponents include a building service configured to generate data basedon the one or more data samples.

In some implementations, the one or more processors can identify one ormore requirements for the building service. The one or more requirementscan indicate at least one of processing resources, storage resources,data availability, or a presence of another building service. In someimplementations, the one or more processors can determine that thephysical gateway meets the one or more requirements. In someimplementations, the one or more processors can deploy the buildingservice to the physical gateway responsive to determining that thephysical gateway meets the one or more requirements.

At least one aspect of the present disclosure a method implemented by abuilding system of a building including one or more storage devices. Themethod can include storing one or more gateway components on the one ormore storage devices. The one or more gateway components can facilitatecommunication between a cloud platform and a physical building device.The method can include deploying the one or more gateway components to aphysical gateway. The physical gateway configured to communicate withone or more building devices and receive one or more data samples fromthe one or more building devices. The one or more gateway components canreceive the one or more data samples and communicate the one or moredata samples to the cloud platform. The method can include identifyingthat a building device of the building running one or more services doesnot meet one or more requirements for running the one or more services.The method can include causing the one or more services executing on thebuilding device to be relocated to the physical gateway such that theone or more gateway components execute the one or more services.

In some implementations, the method can include identifying one or morecommunication protocols of the one or more building devices that collectthe one or more data samples. In some implementations, the method caninclude deploying one or more integration components for the one or morecommunication protocols to the physical gateway to cause the physicalgateway to communicate with the one or more building devices via the oneor more communication protocols.

In some implementations, the method can include deploying an adapterservice to the physical gateway. In some implementations, the adapterservice causes the physical gateway to communicate with a network engineand receive the one or more data samples from the network engine. Insome implementations, the network engine can manage one or more buildingnetworks and receive the one or more data samples from one or moresecond building devices of the building via the one or more buildingnetworks. In some implementations, the adapter service causes thephysical gateway to communicate with the cloud platform and communicatethe one or more data samples to the cloud platform via the adapterservice.

In some implementations, the one or more gateway components can detect anew physical building device connected to the physical gateway. In someimplementations, the one or more gateway components can search a devicelibrary for a configuration of the new physical building device. In someimplementations, the one or more gateway components can perform at leastone of: implementing the configuration to facilitate communication withthe new physical building device responsive to identifying theconfiguration for the new physical building device in the devicelibrary; or perform a discovery process to discover the configurationfor the new physical building device and store the configuration in thedevice library.

In some implementations, the device library is stored in at least one ofthe cloud platform or on the one or more gateway components. In someimplementations, the device library is distributed across a plurality ofinstances of the one or more gateway components in a plurality ofdifferent buildings. In some implementations, the one or more gatewaycomponents can include a building service configured to generate databased on the one or more data samples. In some implementations, themethod can include identifying one or more requirements for the buildingservice. In some implementations, the one or more requirementsindicating at least one of processing resources, storage resources, dataavailability, or a presence of another building service. In someimplementations, the method can include determining that the physicalgateway meets the one or more requirements. In some implementations, themethod can include deploying the building service to the physicalgateway responsive to determining that the physical gateway meets theone or more requirements.

At least one aspect of the present disclosure is directed to a buildingdevice of a building including one or more storage devices. The one ormore storage devices can store instructions that, when executed by oneor more processors, cause the one or more processors to perform one ormore operations. The one or more processors can receive one or moregateway components and implement the one or more gateway components onthe building device. The one or more gateway components can facilitatecommunication between a cloud platform and the building device. The oneor more processors can identify a physical device connected to thebuilding device based on the one or more gateway components. The one ormore processors can search a library of configurations for a pluralityof different physical devices with the identity of the physical deviceto identify a configuration for collecting data samples from thephysical device connected to the building device and retrieve theconfiguration. The one or more processors can implement theconfiguration for the one or more gateway components. The one or moreprocessors can collect one or more data samples from the physical devicebased on the one or more gateway components and the configuration.

In some implementations, the one or more processors can receive anintegration component for a communication protocol corresponding to thephysical device. In some implementations, the one or more processors cancommunicate with the physical device via the communication protocol. Insome implementations, the one or more processors can receive an adapterservice, the adapter service configured to facilitate communication withone or more computing devices. In some implementations, the adapterservice is configured to facilitate communication with a network engineand receive the one or more data samples via the network engine. theadapter service is configured to facilitate communication with a BMSserver and provide the one or more data samples to the BMS server.

In some implementations, the one or more processors can detect a newphysical device connected to the building device. In someimplementations, the one or more processors can search the library for aconfiguration of the new physical device. In some implementations, theone or more processors can perform at least one of: implementing theconfiguration to facilitate communication with the new physical deviceresponsive to identifying the configuration for the new physical devicein the library; or perform a discovery process to discover theconfiguration for the new physical device and store the configuration inthe library. In some implementations, the library is stored in at leastone of the cloud platform or on the one or more gateway components.

In some implementations, the library is distributed across a pluralityof instances of the one or more gateway components in a plurality ofdifferent buildings. In some implementations, the one or more processorscan execute a building service configured to generate data based on theone or more data samples. In some implementations, the one or moreprocessors to receive the building service from the cloud platform.

At least one aspect of the present disclosure is directed to anothermethod implemented by a building device of a building including one ormore storage devices. The method can be performed, for example, by oneor more processors of the building device. The method can includereceiving one or more gateway components and implement the one or moregateway components on the building device, the one or more gatewaycomponents configured to facilitate communication between a cloudplatform and the building device. The method can include identifying, bythe one or more processors, a physical device connected to the buildingdevice based on the one or more gateway components. The method caninclude searching a library of configurations for a plurality ofdifferent physical devices with the identity of the physical device toidentify a configuration for collecting data samples from the physicaldevice connected to the building device and retrieve the configuration.The method can include implementing the configuration for the one ormore gateway components. The method can include collecting one or moredata samples from the physical device based on the one or more gatewaycomponents and the configuration.

In some implementations, the method can include receiving an integrationcomponent for a communication protocol corresponding to the physicaldevice. In some implementations, the method can include communicatingwith the physical device via the communication protocol. In someimplementations, the method can include receiving an adapter service,the adapter service configured to facilitate communication with one ormore computing devices. In some implementations, the adapter service isconfigured to facilitate communication with a network engine and receivethe one or more data samples via the network engine. In someimplementations, the adapter service is configured to facilitatecommunication with a BMS server and provide the one or more data samplesto the BMS server.

In some implementations, the method can include detecting a new physicaldevice connected to the building device. In some implementations, themethod can searching the library for a configuration of the new physicaldevice. In some implementations, the method can performing at least oneof: implementing the configuration to facilitate communication with thenew physical device responsive to identifying the configuration for thenew physical device in the library; or perform a discovery process todiscover the configuration for the new physical device and store theconfiguration in the library.

In some implementations, the library is stored in at least one of thecloud platform or on the one or more gateway components. In someimplementations, the library is distributed across a plurality ofinstances of the one or more gateway components in a plurality ofdifferent buildings. In some implementations, the method can includeexecuting a building service configured to generate data based on theone or more data samples. In some implementations, the method caninclude receiving the building service from the cloud platform.

At least one other aspect of the present disclosure is directed toanother building system of a building including one or more storagedevices. The one or more storage devices can store instructions that,when executed by one or more processors, cause the one or moreprocessors to perform one or more operations. The one or more processorscan store one or more gateway components on the one or more storagedevices, the one or more gateway components performing one or moregateway functions. The one or more processors can deploy a firstinstance of the one or more gateway components to a first edge deviceand a second instance of the one or more gateway components to a secondedge device. The first edge device can measure a first condition of thebuilding and the second edge device can control the first condition or asecond condition of the building, The first instance of the one or moregateway components can cause the first edge device to communicate anevent to the second edge device responsive to a rule being triggeredassociated with the first condition. The second instance of the one ormore gateway components can cause the second edge device to control thefirst condition or the second condition responsive to receiving theevent.

In some implementations, the first instance of the one or more gatewaycomponents includes a cloud connector configured to facilitatecommunication between a cloud platform and the first edge device. Insome implementations, the first instance of the one or more gatewaycomponents includes an adapter configured to interface betweencomponents of the first edge device and a building device broker. Insome implementations, the building system can include a building devicebroker that facilitates communication between the first edge device andthe second edge device. In some implementations, the one or moreprocessors can deploy an endpoint to a local building server. In someimplementations, the one or more processors can cause the first instanceof the one or more gateway components to communicate the first conditionto the local building server based on the endpoint deployed to the localbuilding server.

In some implementations, the first edge device is a surveillance camera,and the first condition is a presence of a person in the building. Insome implementations, the one or more processors can identify acommunication protocol of the first edge device that measures the firstcondition. In some implementations, the one or more processors candeploy an integration component for the communication protocol to thefirst edge device to cause the first edge device to communicate with thesecond edge device via the communication protocol.

In some implementations, the first instance of the one or more gatewaycomponents includes a building service configured to generate data basedon the first condition. In some implementations, the second edge deviceis a smart thermostat, and the second condition is a temperature settingof the building. In some implementations, the first instance of the oneor more gateway components causes the first edge device to communicatethe event to the second edge device via a building device broker.

At least one other aspect of the present disclosure is directed to yetanother method implemented by a building system of a building includingone or more storage devices. The method may be performed, for example,by one or more processors of the building system. The method can includestoring one or more gateway components on the one or more storagedevices, the one or more gateway components performing one or moregateway functions. [0065] In some implementations, deploying a firstinstance of the one or more gateway components to a first edge deviceand a second instance of the one or more gateway components to a secondedge device. The first edge device can measure a first condition of thebuilding and the second edge device can control the first condition or asecond condition of the building. The first instance of the one or moregateway components can cause the first edge device to communicate anevent to the second edge device responsive to a rule being triggeredassociated with the first condition. The second instance of the one ormore gateway components can cause the second edge device to control thefirst condition or the second condition responsive to receiving theevent.

In some implementations, the first instance of the one or more gatewaycomponents includes a cloud connector configured to facilitatecommunication between a cloud platform and the first edge device. Insome implementations, the first instance of the one or more gatewaycomponents includes an adapter configured to interface betweencomponents of the first edge device and a building device broker. Insome implementations, the first instance of the one or more gatewaycomponents causes the first edge device to communicate via a buildingdevice broker that facilitates communication between the first edgedevice and the second edge device.

In some implementations, the method can include deploying an endpoint toa local building server. In some implementations, the method can includecausing the first instance of the one or more gateway components tocommunicate the first condition to the local building server based onthe endpoint deployed to the local building server. In someimplementations, the first edge device is a surveillance camera, and thefirst condition is a presence of a person in the building. In someimplementations, the method can include identifying a communicationprotocol of the first edge device that measures the first condition. Insome implementations, deploying an integration component for thecommunication protocol to the first edge device to cause the first edgedevice to communicate with the second edge device via the communicationprotocol.

In some implementations, the first instance of the one or more gatewaycomponents includes a building service configured to generate data basedon the first condition. In some implementations, the second edge deviceis a smart thermostat, and the second condition is a temperature settingof the building. In some implementations, the first instance of the oneor more gateway components causes the first edge device to communicatethe event to the second edge device via a building device broker.

BRIEF DESCRIPTION OF THE DRAWINGS

Various objects, aspects, features, and advantages of the disclosurewill become more apparent and better understood by referring to thedetailed description taken in conjunction with the accompanyingdrawings, in which like reference characters identify correspondingelements throughout. In the drawings, like reference numbers generallyindicate identical, functionally similar, and/or structurally similarelements.

FIG. 1 is a block diagram of a building data platform including an edgeplatform, a cloud platform, and a twin manager, according to anexemplary embodiment.

FIG. 2 is a graph projection of the twin manager of FIG. 1 includingapplication programming interface (API) data, capability data, policydata, and services, according to an exemplary embodiment.

FIG. 3 is another graph projection of the twin manager of FIG. 1including application programming interface (API) data, capability data,policy data, and services, according to an exemplary embodiment.

FIG. 4 is a graph projection of the twin manager of FIG. 1 includingequipment and capability data for the equipment, according to anexemplary embodiment.

FIG. 5 is a block diagram of the edge platform of FIG. 1 shown ingreater detail to include a connectivity manager, a device manager, anda device identity manager, according to an exemplary embodiment.

FIG. 6A is another block diagram of the edge platform of FIG. 1 shown ingreater detail to include communication layers for facilitatingcommunication between building subsystems and the cloud platform and thetwin manager of FIG. 1 , according to an exemplary embodiment.

FIG. 6B is another block diagram of the edge platform of FIG. 1 showndistributed across building devices of a building, according to anexemplary embodiment.

FIG. 7 is a block diagram of components of the edge platform of FIG. 1 ,including a connector, a building normalization layer, services, andintegrations distributed across various computing devices of a building,according to an exemplary embodiment.

FIG. 8 is a block diagram of a local building management system (BMS)server including a connector and an adapter service of the edge platformof FIG. 1 that operate to connect an engine with the cloud platform ofFIG. 1 , according to an exemplary embodiment.

FIG. 9 is a block diagram of the engine of FIG. 8 including connectorsand an adapter service to connect the engine with the local BMS serverof FIG. 8 and the cloud platform of FIG. 1 , according to an exemplaryembodiment.

FIG. 10 is a block diagram of a gateway including an adapter serviceconnecting the engine of FIG. 8 to the cloud platform of FIG. 1 ,according to an exemplary embodiment.

FIG. 11 is a block diagram of a surveillance camera and a smartthermostat for a zone of the building that uses the edge platform ofFIG. 1 to perform event based control, according to an exemplaryembodiment.

FIG. 12 is a block diagram of a cluster based gateway that runsmicro-services for facilitating communication between buildingsubsystems and cloud applications, according to an exemplary embodiment.

FIG. 13 is a flow diagram of an example method for deploying gatewaycomponents on one or more computing systems of a building, according toan exemplary embodiment.

FIG. 14 is a flow diagram of an example method for deploying gatewaycomponents on a local BMS server, according to an exemplary embodiment.

FIG. 15 is a flow diagram of an example method for deploying gatewaycomponents on a network engine, according to an exemplary embodiment.

FIG. 16 is a flow diagram of an example method for deploying gatewaycomponents on a dedicated gateway, according to an exemplary embodiment.

FIG. 17 is a flow diagram of an example method for implementing gatewaycomponents on a building device, according to an exemplary embodiment.

FIG. 18 is a flow diagram of an example method for deploying gatewaycomponents to perform a building control algorithm, according to anexemplary embodiment.

DETAILED DESCRIPTION Overview

Referring generally to the FIGURES, systems and methods for a buildingmanagement system (BMS) with an edge system is shown, according tovarious exemplary embodiments. The edge system may, in some embodiments,be a software service added to a network of a BMS that can run on one ormultiple different nodes of the network. The software service can bemade up in terms of components, e.g., integration components, connectorcomponents, a building normalization component, software servicecomponents, endpoints, etc. The various components can be deployed onvarious nodes of the network to implement an edge platform thatfacilitates communication between a cloud or other off-premises platformand the local subsystems of the building. In some embodiments, the edgeplatform techniques described herein can be implemented for supportingoff-premises platforms such as servers, computing clusters, computingsystems located in a building other than the edge platform, or any othercomputing environment.

The nodes of the network could be servers, desktop computers,controllers, virtual machines, etc. In some implementations, the edgesystem can be deployed on multiple nodes of a network or multipledevices of a BMS with or without interfacing with a cloud oroff-premises system. For example, in some implementations, the systemsand methods of the present disclosure could be used to coordinatebetween multiple on-premises devices to perform functions of the BMSpartially or wholly without interacting with a cloud or off-premisesdevice (e.g., in a peer-to-peer manner between edge-based devices or incoordination with an on-premises server/gateway).

In some embodiments, the various components of the edge platform can bemoved around various nodes of the BMS network as well as the cloudplatform. The components may include software services, e.g., controlapplications, analytics applications, machine learning models,artificial intelligence systems, user interface applications, etc. Thesoftware services may have requirements, e.g., a requirement thatanother software service be present or be in communication with thesoftware service, a particular level of processing resourceavailability, a particular level of storage availability, etc. In someembodiments, the services of the edge platform can be moved around thenodes of the network based on available data, processing hardware,memory devices, etc. of the nodes. The various software services can bedynamically relocated around the nodes of the network based on therequirements for each software service. In some embodiments, anorchestrator run in a cloud platform, orchestrators distributed acrossthe nodes of the network, and/or the software service itself can makedeterminations to dynamically relocate the software service around thenodes of the network and/or the cloud platform.

In some embodiments, the edge system can implement plug and playcapabilities for connecting devices of a building and connecting thedevices to the cloud platform. In some embodiments, the components ofthe edge system can automatically configure the connection for a newdevice. For example, when a new device is connected to the edgeplatform, a tagging and/or recognition process can be performed. Thistagging and recognition could be performed in a first building. Theresult of the tagging and/or recognition may be a configurationindicating how the new device or subsystem should be connected, e.g.,point mappings, point lists, communication protocols, necessaryintegrations, etc. The tagging and/or discovery can, in someembodiments, be performed in a cloud platform and/or twin platform,e.g., based on a digital twin. The resulting configuration can bedistributed to every node of the edge system, e.g., to a buildingnormalization component. In some embodiments, the configuration can bestored in a single system, e.g., the cloud platform, and the buildingnormalization component can retrieve the configuration from the cloudplatform.

When another device of the same type is installed in the building oranother building, a building normalization component can store anindication of the configuration and/or retrieve the indication of theconfiguration from the cloud platform. The building normalizationcomponent can facilitate plug and play by loading and/or implementingthe configuration for the device without requiring a tagging and/ordiscover process. This can allow for the device to be installed and runwithout requiring any significant amount of setup.

In some embodiments, the building normalization component of one nodemay discover a device connected to the node. Responsive to detecting thenew device, the building normalization component may search a devicelibrary and/or registry stored in the normalization component (or onanother system) to identify a configuration for the new device. If thenew device configuration is not present, the normalization component maysend a broadcast to other nodes. For example, the broadcast couldindicate an air handling unit (AHU) of a particular type, for aparticular vendor, with particular points, etc. Other nodes couldrespond to the broadcast message with a configuration for the AHU. Insome embodiments, a cloud platform could unify configurations fordevices of multiple building sites and thus a configuration discoveredat one building site could be used at another building site through thecloud platform. In some embodiments, the configurations for differentdevices could be stored in a digital twin. The digital twin could beused to perform auto configuration, in some embodiments.

In some embodiments, a digital twin of a building could be analyzed toidentify how to configure a new device when the new device is connectedto an edge device. For example, the digital twin could indicate thevarious points, communication protocols, functions, etc. of a devicetype of the new device (e.g., another instance of the device type).Based on the indication of the digital twin, a particular configurationfor the new device could be deployed to the edge device that facilitatescommunication for the new device.

Building Data Platform

Referring now to FIG. 1 , a building data platform 100 including an edgeplatform 102, a cloud platform 106, and a twin manager 108 are shown,according to an exemplary embodiment. The edge platform 102, the cloudplatform 106, and the twin manager 108 can each be separate servicesdeployed on the same or different computing systems. In someembodiments, the cloud platform 106 and the twin manager 108 areimplemented in off premises computing systems, e.g., outside a building.The edge platform 102 can be implemented on-premises, e.g., within thebuilding. However, any combination of on-premises and off-premisescomponents of the building data platform 100 can be implemented.

The building data platform 100 includes applications 110. Theapplications 110 can be various applications that operate to manage thebuilding subsystems 122. The applications 110 can be remote oron-premises applications (or a hybrid of both) that run on variouscomputing systems. The applications 110 can include an alarm application168 configured to manage alarms for the building subsystems 122. Theapplications 110 include an assurance application 170 that implementsassurance services for the building subsystems 122. In some embodiments,the applications 110 include an energy application 172 configured tomanage the energy usage of the building subsystems 122. The applications110 include a security application 174 configured to manage securitysystems of the building.

In some embodiments, the applications 110 and/or the cloud platform 106interacts with a user device 176. In some embodiments, a component or anentire application of the applications 110 runs on the user device 176.The user device 176 may be a laptop computer, a desktop computer, asmartphone, a tablet, and/or any other device with an input interface(e.g., touch screen, mouse, keyboard, etc.) and an output interface(e.g., a speaker, a display, etc.).

The applications 110, the twin manager 108, the cloud platform 106, andthe edge platform 102 can be implemented on one or more computingsystems, e.g., on processors and/or memory devices. For example, theedge platform 102 includes processor(s) 118 and memories 120, the cloudplatform 106 includes processor(s) 124 and memories 126, theapplications 110 include processor(s) 164 and memories 166, and the twinmanager 108 includes processor(s) 148 and memories 150.

The processors can be a general purpose or specific purpose processors,an application specific integrated circuit (ASIC), one or more fieldprogrammable gate arrays (FPGAs), a group of processing components, orother suitable processing components. The processors may be configuredto execute computer code and/or instructions stored in the memories orreceived from other computer readable media (e.g., CDROM, networkstorage, a remote server, etc.).

The memories can include one or more devices (e.g., memory units, memorydevices, storage devices, etc.) for storing data and/or computer codefor completing and/or facilitating the various processes described inthe present disclosure. The memories can include random access memory(RAM), read-only memory (ROM), hard drive storage, temporary storage,non-volatile memory, flash memory, optical memory, or any other suitablememory for storing software objects and/or computer instructions. Thememories can include database components, object code components, scriptcomponents, or any other type of information structure for supportingthe various activities and information structures described in thepresent disclosure. The memories can be communicably connected to theprocessors and can include computer code for executing (e.g., by theprocessors) one or more processes described herein.

The edge platform 102 can be configured to provide connection to thebuilding subsystems 122. The edge platform 102 can receive messages fromthe building subsystems 122 and/or deliver messages to the buildingsubsystems 122. The edge platform 102 includes one or multiple gateways,e.g., the gateways 112-116. The gateways 112-116 can act as a gatewaybetween the cloud platform 106 and the building subsystems 122. Thegateways 112-116 can be the gateways described in U.S. ProvisionalPatent Application No. 62/951,897 filed Dec. 20th, 2019, the entirety ofwhich is incorporated by reference herein. In some embodiments, theapplications 110 can be deployed on the edge platform 102. In thisregard, lower latency in management of the building subsystems 122 canbe realized.

The edge platform 102 can be connected to the cloud platform 106 via anetwork 104. The network 104 can communicatively couple the devices andsystems of building data platform 100. In some embodiments, the network104 is at least one of and/or a combination of a Wi-Fi network, a wiredEthernet network, a ZigBee network, a Bluetooth network, and/or anyother wireless network. The network 104 may be a local area network or awide area network (e.g., the Internet, a building WAN, etc.) and may usea variety of communications protocols (e.g., BACnet, IP, LON, etc.). Thenetwork 104 may include routers, modems, servers, cell towers,satellites, and/or network switches. The network 104 may be acombination of wired and wireless networks.

The cloud platform 106 can be configured to facilitate communication androuting of messages between the applications 110, the twin manager 108,the edge platform 102, and/or any other system. The cloud platform 106can include a platform manager 128, a messaging manager 140, a commandprocessor 136, and an enrichment manager 138. In some embodiments, thecloud platform 106 can facilitate messaging between the building dataplatform 100 via the network 104.

The messaging manager 140 can be configured to operate as a transportservice that controls communication with the building subsystems 122and/or any other system, e.g., managing commands to devices (C2D),commands to connectors (C2C) for external systems, commands from thedevice to the cloud (D2C), and/or notifications. The messaging manager140 can receive different types of data from the applications 110, thetwin manager 108, and/or the edge platform 102. The messaging manager140 can receive change on value data 142, e.g., data that indicates thata value of a point has changed. The messaging manager 140 can receivetimeseries data 144, e.g., a time correlated series of data entries eachassociated with a particular time stamp. Furthermore, the messagingmanager 140 can receive command data 146. All of the messages handled bythe cloud platform 106 can be handled as an event, e.g., the data142-146 can each be packaged as an event with a data value occurring ata particular time (e.g., a temperature measurement made at a particulartime).

The cloud platform 106 includes a command processor 136. The commandprocessor 136 can be configured to receive commands to perform an actionfrom the applications 110, the building subsystems 122, the user device176, etc. The command processor 136 can manage the commands, determinewhether the commanding system is authorized to perform the particularcommands, and communicate the commands to the commanded system, e.g.,the building subsystems 122 and/or the applications 110. The commandscould be a command to change an operational setting that controlenvironmental conditions of a building, a command to run analytics, etc.

The cloud platform 106 includes an enrichment manager 138. Theenrichment manager 138 can be configured to enrich the events receivedby the messaging manager 140. The enrichment manager 138 can beconfigured to add contextual information to the events. The enrichmentmanager 138 can communicate with the twin manager 108 to retrieve thecontextual information. In some embodiments, the contextual informationis an indication of information related to the event. For example, ifthe event is a timeseries temperature measurement of a thermostat,contextual information such as the location of the thermostat (e.g.,what room), the equipment controlled by the thermostat (e.g., what VAV),etc. can be added to the event. In this regard, when a consumingapplication, e.g., one of the applications 110 receives the event, theconsuming application can operate based on the data of the event, thetemperature measurement, and also the contextual information of theevent.

The enrichment manager 138 can solve a problem that when a deviceproduces a significant amount of information, the information maycontain simple data without context. An example might include the datagenerated when a user scans a badge at a badge scanner of the buildingsubsystems 122. This physical event can generate an output eventincluding such information as “DeviceBadgeScannerID,” “BadgeID,” and/or“Date/Time.” However, if a system sends this data to a consumingapplication, e.g., Consumer A and a Consumer B, each customer may needto call the building data platform knowledge service to queryinformation with queries such as, “What space, build, floor is thatbadge scanner in?” or “What user is associated with that badge?”

By performing enrichment on the data feed, a system can be able toperform inferences on the data. A result of the enrichment may betransformation of the message “DeviceBadgeScannerId, BadgeId,Date/Time,” to “Region, Building, Floor, Asset, DeviceId, BadgeId,UserName, EmployeeId, Date/Time Scanned.” This can be a significantoptimization, as a system can reduce the number of calls by 1/n, where nis the number of consumers of this data feed.

By using this enrichment, a system can also have the ability to filterout undesired events. If there are 100 building in a campus that receive100,000 events per building each hour, but only 1 building is actuallycommissioned, only 1/10 of the events are enriched. By looking at whatevents are enriched and what events are not enriched, a system can dotraffic shaping of forwarding of these events to reduce the cost offorwarding events that no consuming application wants or reads.

An example of an event received by the enrichment manager 138 may be:

  { “id”: “someguid”, “eventType”: “Device_Heartbeat”, “eventTime”:“2018-01-27T00:00:00+00:00” “eventValue”: 1, “deviceID”: “someguid” }

An example of an enriched event generated by the enrichment manager 138may be:

  { “id”: “someguid”, “eventType”: “Device_Heartbeat”, “eventTime”:“2018-01-27T00:00:00+00:00” “eventValue”: 1, “deviceID”: “someguid”,“buildingName”: “Building-48”, “buildingID”: “SomeGuid”, “panelID”:“SomeGuid”, “panelName”: “Building-48-Panel-13”, “cityID”: 371,“cityName”: “Milwaukee”, “stateID”: 48, “stateName”: “Wisconsin (WI)”,“countryID”: 1, “countryName”: “United States” }

By receiving enriched events, an application of the applications 110 canbe able to populate and/or filter what events are associated with whatareas. Furthermore, user interface generating applications can generateuser interfaces that include the contextual information based on theenriched events.

The cloud platform 106 includes a platform manager 128. The platformmanager 128 can be configured to manage the users and/or subscriptionsof the cloud platform 106. For example, what subscribing building, user,and/or tenant utilizes the cloud platform 106. The platform manager 128includes a provisioning service 130 configured to provision the cloudplatform 106, the edge platform 102, and the twin manager 108. Theplatform manager 128 includes a subscription service 132 configured tomanage a subscription of the building, user, and/or tenant while theentitlement service 134 can track entitlements of the buildings, users,and/or tenants.

The twin manager 108 can be configured to manage and maintain a digitaltwin. The digital twin can be a digital representation of the physicalenvironment, e.g., a building. The twin manager 108 can include a changefeed generator 152, a schema and ontology 154, a projection manager 156,a policy manager 158, an entity, relationship, and event database 160,and a graph projection database 162.

The graph projection manager 156 can be configured to construct graphprojections and store the graph projections in the graph projectiondatabase 162. Entities, relationships, and events can be stored in thedatabase 160. The graph projection manager 156 can retrieve entities,relationships, and/or events from the database 160 and construct a graphprojection based on the retrieved entities, relationships and/or events.In some embodiments, the database 160 includes an entity-relationshipcollection for multiple subscriptions.

In some embodiment, the graph projection manager 156 generates a graphprojection for a particular user, application, subscription, and/orsystem. In this regard, the graph projection can be generated based onpolicies for the particular user, application, and/or system in additionto an ontology specific for that user, application, and/or system. Inthis regard, an entity could request a graph projection and the graphprojection manager 156 can be configured to generate the graphprojection for the entity based on policies and an ontology specific tothe entity. The policies can indicate what entities, relationships,and/or events the entity has access to. The ontology can indicate whattypes of relationships between entities the requesting entity expects tosee, e.g., floors within a building, devices within a floor, etc.Another requesting entity may have an ontology to see devices within abuilding and applications for the devices within the graph.

The graph projections generated by the graph projection manager 156 andstored in the graph projection database 162 can be a knowledge graph andis an integration point. For example, the graph projections canrepresent floor plans and systems associated with each floor.Furthermore, the graph projections can include events, e.g., telemetrydata of the building subsystems 122. The graph projections can showapplication services as nodes and API calls between the services asedges in the graph. The graph projections can illustrate thecapabilities of spaces, users, and/or devices. The graph projections caninclude indications of the building subsystems 122, e.g., thermostats,cameras, VAVs, etc. The graph projection database 162 can store graphprojections that keep up a current state of a building.

The graph projections of the graph projection database 162 can bedigital twins of a building. Digital twins can be digital replicas ofphysical entities that enable an in-depth analysis of data of thephysical entities and provide the potential to monitor systems tomitigate risks, manage issues, and utilize simulations to test futuresolutions. Digital twins can play an important role in helpingtechnicians find the root cause of issues and solve problems faster, insupporting safety and security protocols, and in supporting buildingmanagers in more efficient use of energy and other facilities resources.Digital twins can be used to enable and unify security systems, employeeexperience, facilities management, sustainability, etc.

In some embodiments the enrichment manager 138 can use a graphprojection of the graph projection database 162 to enrich events. Insome embodiments, the enrichment manager 138 can identify nodes andrelationships that are associated with, and are pertinent to, the devicethat generated the event. For example, the enrichment manager 138 couldidentify a thermostat generating a temperature measurement event withinthe graph. The enrichment manager 138 can identify relationships betweenthe thermostat and spaces, e.g., a zone that the thermostat is locatedin. The enrichment manager 138 can add an indication of the zone to theevent.

Furthermore, the command processor 136 can be configured to utilize thegraph projections to command the building subsystems 122. The commandprocessor 136 can identify a policy for a commanding entity within thegraph projection to determine whether the commanding entity has theability to make the command. For example, the command processor 136,before allowing a user to make a command, determine, based on the graphprojection database 162, to determine that the user has a policy to beable to make the command.

In some embodiments, the policies can be conditional based policies. Forexample, the building data platform 100 can apply one or moreconditional rules to determine whether a particular system has theability to perform an action. In some embodiments, the rules analyze abehavioral based biometric. For example, a behavioral based biometriccan indicate normal behavior and/or normal behavior rules for a system.In some embodiments, when the building data platform 100 determines,based on the one or more conditional rules, that an action requested bya system does not match a normal behavior, the building data platform100 can deny the system the ability to perform the action and/or requestapproval from a higher level system.

For example, a behavior rule could indicate that a user has access tolog into a system with a particular IP address between 8 A.M. through 5P.M. However, if the user logs in to the system at 7 P.M., the buildingdata platform 100 may contact an administrator to determine whether togive the user permission to log in.

The change feed generator 152 can be configured to generate a feed ofevents that indicate changes to the digital twin, e.g., to the graph.The change feed generator 152 can track changes to the entities,relationships, and/or events of the graph. For example, the change feedgenerator 152 can detect an addition, deletion, and/or modification of anode or edge of the graph, e.g., changing the entities, relationships,and/or events within the database 160. In response to detecting a changeto the graph, the change feed generator 152 can generate an eventsummarizing the change. The event can indicate what nodes and/or edgeshave changed and how the nodes and edges have changed. The events can beposted to a topic by the change feed generator 152.

The change feed generator 152 can implement a change feed of a knowledgegraph. The building data platform 100 can implement a subscription tochanges in the knowledge graph. When the change feed generator 152 postsevents in the change feed, subscribing systems or applications canreceive the change feed event. By generating a record of all changesthat have happened, a system can stage data in different ways, and thenreplay the data back in whatever order the system wishes. This caninclude running the changes sequentially one by one and/or by jumpingfrom one major change to the next. For example, to generate a graph at aparticular time, all change feed events up to the particular time can beused to construct the graph.

The change feed can track the changes in each node in the graph and therelationships related to them, in some embodiments. If a user wants tosubscribe to these changes and the user has proper access, the user cansimply submit a web API call to have sequential notifications of eachchange that happens in the graph. A user and/or system can replay thechanges one by one to reinstitute the graph at any given time slice.Even though the messages are “thin” and only include notification ofchange and the reference “id/seq id,” the change feed can keep a copy ofevery state of each node and/or relationship so that a user and/orsystem can retrieve those past states at any time for each node.Furthermore, a consumer of the change feed could also create dynamic“views” allowing different “snapshots” in time of what the graph lookslike from a particular context. While the twin manager 108 may containthe history and the current state of the graph based upon schemaevaluation, a consumer can retain a copy of that data, and therebycreate dynamic views using the change feed.

The schema and ontology 154 can define the message schema and graphontology of the twin manager 108. The message schema can define whatformat messages received by the messaging manager 140 should have, e.g.,what parameters, what formats, etc. The ontology can define graphprojections, e.g., the ontology that a user wishes to view. For example,various systems, applications, and/or users can be associated with agraph ontology. Accordingly, when the graph projection manager 156generates an graph projection for a user, system, or subscription, thegraph projection manager 156 can generate a graph projection accordingto the ontology specific to the user. For example, the ontology candefine what types of entities are related in what order in a graph, forexample, for the ontology for a subscription of “Customer A,” the graphprojection manager 156 can create relationships for a graph projectionbased on the rule:

-   -   Region        Building        Floor        Space        Asset

For the ontology of a subscription of “Customer B,” the graph projectionmanager 156 can create relationships based on the rule:

-   -   Building        Floor        Asset

The policy manager 158 can be configured to respond to requests fromother applications and/or systems for policies. The policy manager 158can consult a graph projection to determine what permissions differentapplications, users, and/or devices have. The graph projection canindicate various permissions that different types of entities have andthe policy manager 158 can search the graph projection to identify thepermissions of a particular entity. The policy manager 158 canfacilitate fine grain access control with user permissions. The policymanager 158 can apply permissions across a graph, e.g., if “user canview all data associated with floor 1” then they see all subsystem datafor that floor, e.g., surveillance cameras, HVAC devices, fire detectionand response devices, etc.

The twin manager 108 includes a query manager 165 and a twin functionmanager 167. The query manger 164 can be configured to handle queriesreceived from a requesting system, e.g., the user device 176, theapplications 110, and/or any other system. The query manager 165 canreceive queries that include query parameters and context. The querymanager 165 can query the graph projection database 162 with the queryparameters to retrieve a result. The query manager 165 can then cause anevent processor, e.g., a twin function, to operate based on the resultand the context. In some embodiments, the query manager 165 can selectthe twin function based on the context and/or perform operates based onthe context.

The twin function manager 167 can be configured to manage the executionof twin functions. The twin function manager 167 can receive anindication of a context query that identifies a particular data elementand/or pattern in the graph projection database 162. Responsive to theparticular data element and/or pattern occurring in the graph projectiondatabase 162 (e.g., based on a new data event added to the graphprojection database 162 and/or change to nodes or edges of the graphprojection database 162, the twin function manager 167 can cause aparticular twin function to execute. The twin function can execute basedon an event, context, and/or rules. The event can be data that the twinfunction executes against. The context can be information that providesa contextual description of the data, e.g., what device the event isassociated with, what control point should be updated based on theevent, etc. The twin function manager 167 can be configured to performthe operations of the FIGS. 11-15 .

Referring now to FIG. 2 , a graph projection 200 of the twin manager 108including application programming interface (API) data, capability data,policy data, and services is shown, according to an exemplaryembodiment. The graph projection 200 includes nodes 202-240 and edges250-272. The nodes 202-240 and the edges 250-272 are defined accordingto the key 201. The nodes 202-240 represent different types of entities,devices, locations, points, persons, policies, and software services(e.g., API services). The edges 250-272 represent relationships betweenthe nodes 202-240, e.g., dependent calls, API calls, inferredrelationships, and schema relationships (e.g., BRICK relationships).

The graph projection 200 includes a device hub 202 which may represent asoftware service that facilitates the communication of data and commandsbetween the cloud platform 106 and a device of the building subsystems122, e.g., door actuator 214. The device hub 202 is related to aconnector 204, an external system 206, and a digital asset “DoorActuator” 208 by edge 250, edge 252, and edge 254.

The cloud platform 106 can be configured to identify the device hub 202,the connector 204, the external system 206 related to the door actuator214 by searching the graph projection 200 and identifying the edges250-254 and edge 258. The graph projection 200 includes a digitalrepresentation of the “Door Actuator,” node 208. The digital asset “DoorActuator” 208 includes a “DeviceNameSpace” represented by node 207 andrelated to the digital asset “Door Actuator” 208 by the “Property ofObject” edge 256.

The “Door Actuator” 214 has points and timeseries. The “Door Actuator”214 is related to “Point A” 216 by a “has_a” edge 260. The “DoorActuator” 214 is related to “Point B” 218 by a “has_A” edge 258.Furthermore, timeseries associated with the points A and B arerepresented by nodes “TS” 220 and “TS” 222. The timeseries are relatedto the points A and B by “has_a” edge 264 and “has_a” edge 262. Thetimeseries “TS” 220 has particular samples, sample 210 and 212 eachrelated to “TS” 220 with edges 268 and 266 respectively. Each sampleincludes a time and a value. Each sample may be an event received fromthe door actuator that the cloud platform 106 ingests into the entity,relationship, and event database 160, e.g., ingests into the graphprojection 200.

The graph projection 200 includes a building 234 representing a physicalbuilding. The building includes a floor represented by floor 232 relatedto the building 234 by the “has_a” edge from the building 234 to thefloor 232. The floor has a space indicated by the edge “has_a” 270between the floor 232 and the space 230. The space has particularcapabilities, e.g., is a room that can be booked for a meeting,conference, private study time, etc. Furthermore, the booking can becanceled. The capabilities for the floor 232 are represented bycapabilities 228 related to space 230 by edge 280. The capabilities 228are related to two different commands, command “book room” 224 andcommand “cancel booking” 226 related to capabilities 228 by edge 284 andedge 282 respectively.

If the cloud platform 106 receives a command to book the spacerepresented by the node, space 230, the cloud platform 106 can searchthe graph projection 200 for the capabilities for the 228 related to thespace 230 to determine whether the cloud platform 106 can book the room.

In some embodiments, the cloud platform 106 could receive a request tobook a room in a particular building, e.g., the building 234. The cloudplatform 106 could search the graph projection 200 to identify spacesthat have the capabilities to be booked, e.g., identify the space 230based on the capabilities 228 related to the space 230. The cloudplatform 106 can reply to the request with an indication of the spaceand allow the requesting entity to book the space 230.

The graph projection 200 includes a policy 236 for the floor 232. Thepolicy 236 is related set for the floor 232 based on a “To Floor” edge274 between the policy 236 and the floor 232. The policy 236 is relatedto different roles for the floor 232, read events 238 via edge 276 andsend command 240 via edge 278. The policy 236 is set for the entity 203based on has edge 251 between the entity 203 and the policy 236.

The twin manager 108 can identify policies for particular entities,e.g., users, software applications, systems, devices, etc. based on thepolicy 236. For example, if the cloud platform 106 receives a command tobook the space 230. The cloud platform 106 can communicate with the twinmanager 108 to verify that the entity requesting to book the space 230has a policy to book the space. The twin manager 108 can identify theentity requesting to book the space as the entity 203 by searching thegraph projection 200. Furthermore, the twin manager 108 can furtheridentify the edge has 251 between the entity 203 and the policy 236 andthe edge 1178 between the policy 236 and the command 240.

Furthermore, the twin manager 108 can identify that the entity 203 hasthe ability to command the space 230 based on the edge 1174 between thepolicy 236 and the edge 270 between the floor 232 and the space 230. Inresponse to identifying the entity 203 has the ability to book the space230, the twin manager 108 can provide an indication to the cloudplatform 106.

Furthermore, if the entity makes a request to read events for the space230, e.g., the sample 210 and the sample 212, the twin manager 108 canidentify the edge has 251 between the entity 203 and the policy 236, theedge 1178 between the policy 236 and the read events 238, the edge 1174between the policy 236 and the floor 232, the “has_a” edge 270 betweenthe floor 232 and the space 230, the edge 268 between the space 230 andthe door actuator 214, the edge 260 between the door actuator 214 andthe point A 216, the “has⁻ a” edge 264 between the point A 216 and theTS 220, and the edges 268 and 266 between the TS 220 and the samples 210and 212 respectively.

Referring now to FIG. 3 , a graph projection 300 of the twin manager 108including application programming interface (API) data, capability data,policy data, and services is shown, according to an exemplaryembodiment. The graph projection 300 includes the nodes and edgesdescribed in the graph projection 200 of FIG. 2 . The graph projection300 includes a connection broker 1254 related to capabilities 228 byedge 398 a. The connection broker 353 can be a node representing asoftware application configured to facilitate a connection with anothersoftware application. In some embodiments, the cloud platform 106 canidentify the system that implements the capabilities 228 by identifyingthe edge 398 a between the capabilities 228 and the connection broker353.

The connection broker 353 is related to an agent that optimizes a space356 via edge 398 b. The agent represented by the node 356 can book andcancel bookings for the space represented by the node 230 based on theedge 398 b between the connection broker 353 and the node 356 and theedge 398 a between the capabilities 228 and the connection broker 353.

The connection broker 353 is related to a cluster 308 by edge 398 c.Cluster 308 is related to connector B 302 via edge 398 e and connector A306 via edge 398 d. The connector A 306 is related to an externalsubscription service 304. A connection broker 310 is related to cluster308 via an edge 311 representing a rest call that the connection brokerrepresented by node 310 can make to the cluster represented by cluster308.

The connection broker 310 is related to a virtual meeting platform 312by an edge 354. The node 312 represents an external system thatrepresents a virtual meeting platform. The connection broker representedby node 310 can represent a software component that facilitates aconnection between the cloud platform 106 and the virtual meetingplatform represented by node 312. When the cloud platform 106 needs tocommunicate with the virtual meeting platform represented by the node312, the cloud platform 106 can identify the edge 354 between theconnection broker 310 and the virtual meeting platform 312 and selectthe connection broker represented by the node 310 to facilitatecommunication with the virtual meeting platform represented by the node312.

A capabilities node 318 can be connected to the connection broker 310via edge 360. The capabilities 318 can be capabilities of the virtualmeeting platform represented by the node 312 and can be related to thenode 312 through the edge 360 to the connection broker 310 and the edge354 between the connection broker 310 and the node 312. The capabilities318 can define capabilities of the virtual meeting platform representedby the node 312. The node 320 is related to capabilities 318 via edge362. The capabilities may be an invite bob command represented by node316 and an email bob command represented by node 314. The capabilities318 can be linked to a node 320 representing a user, Bob. The cloudplatform 106 can facilitate email commands to send emails to the userBob via the email service represented by the node 304. The node 304 isrelated to the connect a node 306 via edge 398 f Furthermore, the cloudplatform 106 can facilitate sending an invite for a virtual meeting viathe virtual meeting platform represented by the node 312 linked to thenode 318 via the edge 358.

The node 320 for the user Bob can be associated with the policy 236 viathe “has” edge 364. Furthermore, the node 320 can have a “check policy”edge 366 with a portal node 324. The device API node 328 has a checkpolicy edge 370 to the policy node 236. The portal node 324 has an edge368 to the policy node 236. The portal node 324 has an edge 323 to anode 326 representing a user input manager (UIM). The portal node 324 isrelated to the UIM node 326 via an edge 323. The UIM node 326 has anedge 323 to a device API node 328. The UIM node 326 is related to thedoor actuator node 214 via edge 372. The door actuator node 214 has anedge 374 to the device API node 328. The door actuator 214 has an edge335 to the connector virtual object 334. The device hub 332 is relatedto the connector virtual object via edge 380. The device API node 328can be an API for the door actuator 214. The connector virtual object334 is related to the device API node 328 via the edge 331.

The device API node 328 is related to a transport connection broker 330via an edge 329. The transport connection broker 330 is related to adevice hub 332 via an edge 378. The device hub represented by node 332can be a software component that hands the communication of data andcommands for the door actuator 214. The cloud platform 106 can identifywhere to store data within the graph projection 300 received from thedoor actuator by identifying the nodes and edges between the points 216and 218 and the device hub node 332. Similarly, the cloud platform 308can identify commands for the door actuator that can be facilitated bythe device hub represented by the node 332, e.g., by identifying edgesbetween the device hub node 332 and an open door node 352 and an lockdoor node 350. The door actuator 114 has an edge “has mapped an asset”280 between the node 214 and a capabilities node 348. The capabilitiesnode 348 and the nodes 352 and 350 are linked by edges 396 and 394.

The device hub 332 is linked to a cluster 336 via an edge 384. Thecluster 336 is linked to connector A 340 and connector B 338 by edges386 and the edge 389. The connector A 340 and the connector B 338 islinked to an external system 344 via edges 388 and 390. The externalsystem 344 is linked to a door actuator 342 via an edge 392.

Referring now to FIG. 4 , a graph projection 400 of the twin manager 108including equipment and capability data for the equipment is shown,according to an exemplary embodiment. The graph projection 400 includesnodes 402-456 and edges 360-498 f. The cloud platform 106 can search thegraph projection 400 to identify capabilities of different pieces ofequipment.

A building node 404 represents a particular building that includes twofloors. A floor 1 node 402 is linked to the building node 404 via edge460 while a floor 2 node 406 is linked to the building node 404 via edge462. The floor 2 includes a particular room 2023 represented by edge 464between floor 2 node 406 and room 2023 node 408. Various pieces ofequipment are included within the room 2023. A light represented bylight node 416, a bedside lamp node 414, a bedside lamp node 412, and ahallway light node 410 are related to room 2023 node 408 via edge 466,edge 472, edge 470, and edge 468.

The light represented by light node 416 is related to a light connector426 via edge 484. The light connector 426 is related to multiplecommands for the light represented by the light node 416 via edges 484,486, and 488. The commands may be a brightness setpoint 424, an oncommand 425, and a hue setpoint 428. The cloud platform 106 can receivea request to identify commands for the light represented by the light416 and can identify the nodes 424-428 and provide an indication of thecommands represented by the node 424-428 to the requesting entity. Therequesting entity can then send commands for the commands represented bythe nodes 424-428.

The bedside lamp node 414 is linked to a bedside lamp connector 481 viaan edge 413. The connector 481 is related to commands for the bedsidelamp represented by the bedside lamp node 414 via edges 492, 496, and494. The command nodes are a brightness setpoint node 432, an on commandnode 434, and a color command 436. The hallway light 410 is related to ahallway light connector 446 via an edge 498 d. The hallway lightconnector 446 is linked to multiple commands for the hallway light node410 via edges 498 g, 498 f, and 498 e. The commands are represented byan on command node 452, a hue setpoint node 450, and a light bulbactivity node 448.

The graph projection 400 includes a name space node 422 related to aserver A node 418 and a server B node 420 via edges 474 and 476. Thename space node 422 is related to the bedside lamp connector 481, thebedside lamp connector 444, and the hallway light connector 446 viaedges 482, 480, and 478. The bedside lamp connector 444 is related tocommands, e.g., the color command node 440, the hue setpoint command438, a brightness setpoint command 456, and an on command 454 via edges498 c, 498 b, 498 a, and 498.

Edge Platform

Referring now to FIG. 5 , the edge platform 102 is shown in greaterdetail to include a connectivity manager 506, a device manager 508, anda device identity manager 510, according to an exemplary embodiment. Insome embodiments, the edge platform 102 of FIG. 5 may be a particularinstance run on a computing device. For example, the edge platform 102could be instantiated one or multiple times on various computing devicesof a building, a cloud, etc. In some embodiments, each instance of theedge platform 102 may include the connectivity manager 506, the devicemanager 508, and/or the device identity manager 510. These threecomponents may serve as the core of the edge platform 102.

The edge platform 102 can include a device hub 502, a connector 504,and/or an integration layer 512. The edge platform 102 can facilitatecommunication between the devices 514-518 and the cloud platform 106and/or twin manager 108. The communication can be telemetry, commands,control data, etc. Examples of command and control via a building dataplatform is described in U.S. patent application Ser. No. 17/134,661filed Dec. 28, 2020, the entirety of which is incorporated by referenceherein.

The devices 514-518 can be building devices that communicate with theedge platform 102 via a variety of various building protocols. Forexample, the protocol could be Open Platform Communications (OPC)Unified Architecture (UA), Modbus, BACnet, etc. The integration layer512 can, in some embodiments, integrate the various devices 514-518through the respective communication protocols of each of the devices514-518. In some embodiments, the integration layer 512 can dynamicallyinclude various integration components based on the needs of theinstance of the edge platform 102, for example, if a BACnet device isconnected to the edge platform 102, the edge platform 102 may run aBACnet integration component. The connector 504 may be the core serviceof the edge platform 102. In some embodiments, every instance of theedge platform 102 can include the connector 504. In some embodiments,the edge platform 102 is a light version of a gateway.

In some embodiments, the connectivity manager 506 operates to connectthe devices 514-518 with the cloud platform 106 and/or the twin manager108. The connectivity manager 506 can allow a device running theconnectivity manager 506 to connect with an ecosystem, the cloudplatform 106, another device, another device which in turn connects thedevice to the cloud, connects to a data center, a private on-premisescloud, etc. The connectivity manager 506 can facilitate communicationnorthbound (with higher level networks), southbound (with lower levelnetworks), and/or east/west (e.g., with peer networks). The connectivitymanager 506 can implement communication via MQ Telemetry Transport(MQTT) and/or sparkplug, in some embodiments. The operational abilitiesof the connectivity manager 506 can be extended via an softwaredevelopment toolkit (SDK), and/or an API. In some embodiments, theconnectivity manager 506 can handle offline network states with variousnetworks.

In some embodiments, the device manager 508 can be configured to manageupdates and/or upgrades for the device that the device manager 508 isrun on, the software for the edge platform 102 itself, and/or devicesconnected to the edge platform 102, e.g., the devices 514-518. Thesoftware updates could be new software components, e.g., services, newintegrations, etc. The device manager 508 can be used to manage softwarefor edge platforms for a site, e.g., make updates or changes on a largescale across multiple devices. In some embodiments, the device manager508 can implement an upgrade campaign where one or more certain devicetypes and/or pieces of software are all updated together. The updatedepth may be of any order, e.g., a single update to a device, an updateto a device and a lower level device that the device communication with,etc. In some embodiments, the software updates are delta updates, whichare suitable for low-bandwidth devices. For example, instead ofreplacing an entire piece of software on the edge platform 102, only theportions of the piece of software that need to be updated may beupdated, thus reducing the amount of data that needs to be downloaded tothe edge platform 102 in order to complete the update.

The device identity manager 510 can implement authorization andauthentication for the edge platform 102. For example, when the edgeplatform 102 connects with the cloud platform 106, the twin manager 108,and/or the devices 514-518, the device identity manager 510 can identifythe edge platform 102 to the various platforms, managers, and/ordevices. Regardless of the device that the edge platform 102 isimplemented on, the device identity manager 510 can handleidentification and uniquely identify the edge platform 102. The deviceidentity manager 510 can handle certification management, trust data,authentication, authorization, encryption keys, credentials, signatures,etc. Furthermore, the device identity manager 510 may implement varioussecurity features for the edge platform 102, e.g., antivirus software,firewalls, verified private networks (VPNs), etc. Furthermore, thedevice identity manager 510 can manage commissioning and/or provisioningfor the edge platform 102.

Referring now to FIG. 6A, another block diagram of the edge platform 102is shown in greater detail to include communication layers forfacilitating communication between building subsystems 122 and the cloudplatform 106 and/or the twin manager of FIG. 1 , according to anexemplary embodiment. The building subsystems 122 may include devices ofvarious different building subsystems, e.g., HVAC subsystems, fireresponse subsystems, access control subsystems, surveillance subsystems,etc. The devices may include temperature sensors 614, lighting systems616, airflow sensors 618, airside systems 620, chiller systems 622,surveillance systems 624, controllers 626, valves 628, etc.

The edge platform 102 can include a protocol integration layer 610 thatfacilities communication with the building subsystems 122 via one ormore protocols. In some embodiments, the protocol integration layer 610can be dynamically updated with a new protocol integration responsive todetecting that a new device is connected to the edge platform 102 andthe new device requires the new protocol integration. In someembodiments, the protocol integration layer 610 can be customizedthrough an SDK 612.

In some embodiments, the edge platform 102 can handle MQTT communicationthrough an MQTT layer 608 and an MQTT connector 606. In someembodiments, the MQTT layer 608 and/or the MQTT connector 606 handlesMQTT based communication and/or any other publication/subscription basedcommunication where devices can subscribe to topics and publish totopics. In some embodiments, the MQTT connector 606 implements an MQTTbroker configured to manage topics and facilitate publications totopics, subscriptions to topics, etc. to support communication betweenthe building subsystems 122 and/or with the cloud platform 106. Anexample of devices of a building communicating via apublication/subscription method is shown in FIG. 11 .

The edge platform 102 includes a translations, rate-limiting, androuting layer 604. The layer 604 can handle translating data from oneformat to another format, e.g., from a first format used by the buildingsubsystems 122 to a format that the cloud platform 106 expects, or viceversa. The layer 604 can further perform rate limiting to control therate at which data is transmitted, requests are sent, requests arereceived, etc. The layer 604 can further perform message routing, insome embodiments. The cloud connector 602 may connect the edge platform102, e.g., establish and/or communicate with one or more communicationendpoints between the cloud platform 106 and the cloud connector 602.

Referring now to FIG. 6B, a system 629 where the edge platform 102 isshown distributed across building devices of a building, according to anexemplary embodiment. The local server 656, the computing system 660,the device 662, and/or the device 664 may all be located on-premiseswithin a building, in some embodiments. The various devices 662 and/or664 may, in some embodiments, be gateway boxes, e.g., gateways 112-116.The gateway boxes may be the various gateways described in U.S. patentapplication Ser. No. 17/127,303 filed Dec. 18, 2020, the entirety ofwhich is incorporated by reference herein. The computing system 660could be a desktop computer, a server system, a microcomputer, a minipersonal computer (PC), a laptop computer, a dedicated computingresource in a building, etc. The local server 656 may be an on-premisescomputer system that provides resources, data, services or otherprograms to computing devices of the building. The system 629 includes alocal server 656 that can include a server database 658 that stores dataof the building, in some embodiments.

In some embodiments, the device 662 and/or the device 664 implementgateway operations for connecting the devices of the building subsystems122 with the cloud platform 106 and/or the twin manager 108. In someembodiments, the devices 662 and/or 664 can communicate with thebuilding subsystems 122, collect data from the building subsystems 122,and communicate the data to the cloud platform 106 and/or the twinmanager 108. In some embodiments, the devices 662 and/or the device 664can push commands from the cloud platform 106 and/or the twin manager108 to the building subsystem 122.

The systems and devices 656-664 can each run an instance of the edgeplatform 102. In some embodiments, the systems and devices 656-664 runthe connector 504 which may include, in some embodiments, theconnectivity manager 506, the device manager 508, and/or the deviceidentity manager 510. In some embodiments, the device manager 508controls what services each of the systems and devices 656-664 run,e.g., what services from a service catalog 630 each of the systems anddevices 656-664 run.

The service catalog 630 can be stored in the cloud platform 106, withina local server (e.g., in the server database 658 of the local server656), on the computing system 660, on the device 662, on the device 664,etc. The various services of the service catalog 630 can be run on thesystems and devices 656-664, in some embodiments. The services canfurther move around the systems and devices 656-664 based on theavailable computing resources, processing speeds, data availability, thelocations of other services which produce data or perform operationsrequired by the service, etc.

The service catalog 630 can include an analytics service 632 thatgenerates analytics data based on building data of the buildingsubsystems 122, a workflow service 634 that implements a workflow,and/or an activity service 636 that performs an activity. The servicecatalog 630 includes an integration service 638 that integrates a devicewith a particular subsystem (e.g., a BACnet integration, a Modbusintegration, etc.), a digital twin service 640 that runs a digital twin,and/or a database service 642 that implements a database for storingbuilding data. The service catalog 630 can include a control service 644for operating the building subsystems 122, a scheduling service 646 thathandles scheduling of areas (e.g., desks, conference rooms, etc.) of abuilding, and/or a monitoring service 648 that monitors a piece ofequipment of the building subsystem 122. The service catalog 630includes a command service 650 that implements operational commands forthe building subsystems 122, an optimization service 652 that runs anoptimization to identify operational parameters for the buildingsubsystems 122, and/or achieve service 654 that archives settings,configurations, etc. for the building subsystem 122, etc.

In some embodiments, the various systems 656, 660, 662, and 664 canrealize technical advantages by implementing services of the servicecatalog 630 locally and/or storing the service catalog 630 locally.Because the services can be implemented locally, i.e., within abuilding, lower latency can be realized in making control decisions orderiving information since the communication time between the systems656, 660, 662, and 664 and the cloud is not needed to run the services.Furthermore, because the systems 656, 660, 662, and 664 can runindependently of the cloud (e.g., implement their servicesindependently) even if the network 104 fails or encounters an error thatprevents communication between the cloud and the systems 656, 660, 662,and 664, the systems can continue operation without interruption.Furthermore, by balancing computation between the cloud and the systems656, 660, 662, and 664, power usage can be balanced more effectively.Furthermore, the system 629 has the ability to scale (e.g., grow orshrink) the functionality/services provided on edge devices based oncapabilities of edge hardware onto which edge system is beingimplemented.

Referring now to FIG. 7 , a system 700 where connectors, buildingnormalization layers, services, and integrations are distributed acrossvarious computing devices of a building is shown, according to anexemplary embodiment. In the system 700, the cloud platform 106, a localserver 702, and a device/gateway 720 run components of the edge platform102, e.g., connectors, building normalization layers, services, andintegrations. The local server 702 can be a server system located withina building. The device/gateway 720 could be a building device locatedwithin the building, in some embodiments. For example, thedevice/gateway 720 could be a smart thermostat, a surveillance camera,an access control system, etc. In some embodiments, the device gateway720 is a dedicated gateway box. The building device may be a physicalbuilding device, and may include a memory device (e.g., a flash memory,a RAM, a ROM, etc.). The memory of the physical building device canstore one or more data samples, which may be any data related to theoperation of the physical building device. For example, if the buildingdevice is a smart thermostat, the data samples can be timestampedtemperature readings. If the building device is a surveillance camera,the data samples may be

The local server 702 can include a connector 704, services 706-710, abuilding normalization layer 712, and integrations 714-718. Thesecomponents of the local server 702 can be deployed to the local server702, e.g., from the cloud platform 106. These components may further bedynamically moved to various other devices of the building, in someembodiments. The connector 704 may be the connector described withreference to FIG. 5 that includes the connectivity manager 506, thedevice manager 508, and/or the device identity manager 510. Theconnector 704 may connect the local server 702 with the cloud platform106, in some embodiments. For example, the connector 704 may enablecommunication with an endpoint of the cloud platform 106, e.g., theendpoint 754 which could be an MQTT endpoint or a Sparkplug endpoint.

The building normalization layer 712 can be a software component thatruns the integrations 714-718 and/or the analytics 706-710. The buildingnormalization layer 712 can be configured to allow for a variety ofdifferent integrations and/or analytics to be deployed to the localserver 702. In some embodiments, the building normalization layer 712could allow for any service of the service catalog 630 to run on thelocal server 702. Furthermore, the building normalization layer 712 canrelocate, or allow for relocation, of services and/or integrationsacross the cloud platform 106, the local server 702, and/or thedevice/gateway 720. In some embodiments, the services 706-710 arerelocatable based on processing power of the local server 702, based oncommunication bandwidth, available data, etc. The services can be movedfrom one device to another in the system 700 such that the requirementsfor the service are met appropriately.

Furthermore, instances of the integrations 714-718 can be relocatableand/or deployable. The integrations 714-718 may be instantiated ondevices of the system 700 based on the requirements of the devices,e.g., whether the local server 702 needs to communicate with aparticular device (e.g., the Modbus integration 714 could be deployed tothe local server 702 responsive to a detection that the local server 702needs to communicate with a Modbus device). The locations of theintegrations can be limited by the physical protocols that each deviceis capable of implementing and/or security limitations of each device.

In some embodiments, the deployment and/or movement of services and/orintegrations can be done manually and/or in an automated manner. Forexample, when a building site is commissioned, a user could manuallyselect, e.g., via a user interface on the user device 176, the devicesof the system 700 where each service and/or integration should run. Insome embodiments, instead of having a user select the locations, asystem, e.g., the cloud platform 106, could deploy services and/orintegrations to the devices of the system 700 automatically based on theideal locations for each of multiple different services and/orintegrations.

In some embodiments, an orchestrator (e.g., run on instances of thebuilding normalization layer 712 or in the cloud platform 106) or aservice and/or integration itself could determine that a particularservice and/or integration should move from one device to another deviceafter deployment. In some embodiments, as the devices of the system 700change, e.g., more or less services are run, hard drives are filled withdata, physical building devices are moved, installed, and/oruninstalled, the available data, bandwidth, computing resources, and/ormemory resources may change. The services and/or integrations can bemoved from a first device to a second more appropriate device responsiveto a detection that the first device is not meeting the requirements ofthe service and/or integration.

As an example, an energy efficiency model service could be deployed tothe system 700. For example, a user may request that an energyefficiency model service run in their building. Alternatively, a systemmay identify that an energy efficiency model service would improve theperformance of the building and automatically deploy the service. Theenergy efficiency model service may have requirements. For example, theenergy efficiency model may have a high data throughput requirement, arequirement for access to weather data, a high requirement for datastorage to store historical data needed to make inferences, etc. In someembodiments, a rules engine with rules could define whether services getpushed around to other devices, whether model goes back to the cloud formore training, whether an upgrade is needed to implement an increase inpoints, etc.

As another example, a historian service may manage a log of historicalbuilding data collected for a building, e.g., store a record ofhistorical temperature measurements of a building, store a record ofbuilding occupant counts, store a record of operational controldecisions (e.g., setpoints, static pressure setpoints, fan speeds,etc.), etc. One or more other services may depend on the historian, forexample, the one or more other services may consume historical datarecorded by the historian. In some embodiments, other services can berelocated along with the historian service such that the other servicescan operate on the historian data. For example, an occupancy predictionservice may need a historical log of occupancy record by the historianservice to run. In some embodiments, instead of having the occupancyprediction service and the historian run on the same physical device, aparticular integrations between the two devices that the historianservice and the occupancy prediction service run on could be establishedsuch that occupancy data of the historian service can be provided fromthe historian service to the occupancy prediction service.

This portability of services and/or integrations removes dependenciesbetween hardware and software. Allowing services and/or integrations tomove from one device to another device can keep services runningcontinuously even if the run on a variety of locations. This decouplessoftware from hardware.

In some embodiments, the building normalization layer 712 can facilitateauto discovery of devices and/or perform auto configuration. In someembodiments, the building normalization 726 of the cloud platform 106performs the auto discovery. In some embodiments, responsive todetecting a new device connected to the local server 702, e.g., a newdevice of the building subsystems 122, the building normalization canidentify points of the new device, e.g., identify measurement points,control points, etc. In some embodiments, the building normalizationlayer 712 performs a discovery process where strings, tags, or othermetadata is analyzed to identify each point. In some embodiments, adiscover process as discussed in U.S. patent application Ser. No.16/885,959 filed May 28, 2020, U.S. patent application Ser. No.16/885,968 filed May 28, 2020, U.S. patent application Ser. No.16/722,439 filed Dec. 20, 2019 (now U.S. Pat. No. 10,831,163), and U.S.patent application Ser. No. 16/663,623 filed Oct. 25, 2019, which areincorporated by reference herein in their entireties.

In some embodiments, the cloud platform 106 performs a site survey ofall devices of a site or multiple sites. For example, the cloud platform106 could identify all devices installed in the system 700. Furthermore,the cloud platform 106 could perform discovery for any devices that arenot recognized. The result of the discovery of a device could be aconfiguration for the device, for example, indications of points tocollect data from and/or send commands to. The cloud platform 106 can,in some embodiments, distribute a copy of the configuration for thedevice to all of the instances of the building normalization layer 712.In some embodiments, the copy of the configuration can be distributed toother buildings different from the building that the device wasdiscovered at. In this regard, responsive to a similar device type beinginstalled somewhere else, e.g., in the same building, in a differentbuilding, at a different campus, etc. the instance of the buildingnormalization can select the copy of the device configuration andimplement the device configuration for the device.

Similarly, if the instance of the building normalization detects a newdevice that is not recognized, the building normalization could performa discovery process for the new device and distribute the configurationfor the new device to other instances of the building normalization. Inthis regard, each building normalization instance can implement learningby discovering new devices and injecting device configurations into adevice catalog stored and distributed across each building normalizationinstance.

In some embodiments, the device catalog can store names of every datapoint of every device. In some embodiments, the services that operate onthe data points can consume the data points based on the indications ofthe data points in the device catalog. Furthermore, the integrations maycollect data from data points and/or send actions to the data pointsbased on the naming of the device catalog. In some embodiments, thevarious building normalization and synchronize the device catalogs theystore. For example, changes to one device catalog can be distributed toother building normalizations. If a point name was changed for a device,this change could be distributed across all building normalizationsthrough the device catalog synchronization such that there are nodisruptions to the services that consume the point.

The analytics service 706 may be a service that generates one or moreanalytics based on building data received from a building device, e.g.,directly from the building device or through a gateway that communicateswith the building device, e.g., from the device/gateway 720. Theanalytics service 706 can be configured to generate an analytics databased on the building data such as a carbon emissions metric, an energyconsumption metric, a comfort score, a health score, etc. The databaseservice 708 can operate to store building data, e.g., building datacollected from the device/gateway 720. In some embodiments, theanalytics service 706 may operate against historical data stored in thedatabase service 708. In some embodiments, the analytics service 706 mayhave a requirement that the analytics service 706 is implemented withaccess to a database service 706 that stores historical data. In thisregard, the analytics service 706 can be deployed to, or relocated to adevice including an instantiation of the database service 708. In someembodiments, the database service 708 could be deployed to the localserver 702 responsive to determining that the analytics service 706requires the database service 708 to run.

The optimization service 710 can be a service that operates to implementan optimization of one or more variables based on one or moreconstraints. The optimization service 710 could, in some embodiments,implement optimization for allocating loads, making control decisions,improving energy usage and/or occupant comfort etc. The optimizationperformed by the optimization service 710 could be the optimizationdescribed in U.S. patent application Ser. No. 17/542,184 filed Dec. 3,2021, which is incorporated by reference herein.

The Modbus integration 714 can be a software component that enables thelocal server 702 to collect building data for data points of buildingdevices that operate with a Modbus protocol. Furthermore, the Modbusintegration 714 can enable the local server 702 to communicate data,e.g., operating parameters, setpoints, load allocations, etc. to thebuilding device. The communicated data may, in some embodiments, becontrol decisions determined by the optimization service 710.

Similarly, the BACnet integration 716 can enable the local server 702 tocommunicate with one or more BACnet based devices, e.g., send data to,or receive data from, the BACnet based devices. The endpoint 718 couldbe an endpoint for MQTT and/or Sparkplug. In some embodiments, theelement 718 can be a software service including an endpoint and/or alayer for implementing MQTT and/or Sparkplug communication. In thesystem 700, the endpoint 718 can be used for communicating by the localserver 702 with the device/gateway 720, in some embodiments.

The cloud platform 106 can include an artificial intelligence (AI)service 721, an archive service 722, and/or a dashboard service 724. TheAI service 721 can run one or more artificial intelligence operations,e.g., inferring information, performing autonomous control of thebuilding, etc. The archive service 722 may archive building datareceived from the device/gateway 720 (e.g., collected point data). Thearchive service 722 may, in some embodiments, store control decisionsmade by another service, e.g., the AI service 721, the optimizationservice 710, etc. The dashboard service 724 can be configured to providea user interface to a user with analytic results, e.g., generated by theanalytics service 706, command interfaces, etc. The cloud platform 106is further shown to include the building normalization 726, which may bean instance of the building normalization layer 712.

The cloud platform 106 further includes an endpoint 754 forcommunicating with the local server 702 and/or the device/gateway 720.The cloud platform 106 may include an integration 756, e.g., an MQTTintegration supporting MQTT based communication with MQTT devices.

The device/gateway 720 can include a local server connector 732 and acloud platform connector 734. The cloud platform connector 734 canconnect the device/gateway 720 with the cloud platform 106. The localserver connector 732 can connect the device/gateway 720 with the localserver 702. The device/gateway 720 includes a commanding service 736configured to implement commands for devices of the building subsystems122 (e.g., the device/gateway 720 itself or another device connected tothe device/gateway 720). The monitoring service 738 can be configured tomonitor operation of the devices of the building subsystems 122, thescheduling service 740 can implement scheduling for a space or asset,the alarm/event service 742 can generate alarms and/or events whenspecific rules are tripped based on the device data, the control service744 can implement a control algorithm and/or application for the devicesof the building subsystems 122, and/or the activity service 746 canimplement a particular activity for the devices of the buildingsubsystems 122.

The device/gateway 720 further includes a building normalization 748.The building normalization 748 may be an instance of the buildingnormalization layer 712, in some embodiments. The device/gateway 720 mayfurther include integrations 750-752. The integration 750 may be aModbus integration for communicating with a Modbus device. Theintegration 752 may be a BACnet integration for communicating withBACnet devices.

Referring now to FIG. 8 , system 800 including a local buildingmanagement system (BMS) server 804 including a cloud platform connector806 and a BMS API adapter service 808 that operate to connect a networkengine 816 with the cloud platform 106 is shown, according to anexemplary embodiment. The components 802, 806, and 808 may be componentsof the edge platform 102, in some embodiments. In some embodiments, thecloud platform connector 806 is the same as, or similar to, theconnector 504, e.g., includes the connectivity manager 506, the devicemanager 508, and/or the device identity manager 510.

The local BMS server 804 may be a server that implements buildingapplications and/or data collection. The building applications can bethe various services discussed herein, e.g., the services of the servicecatalog 630. In some embodiments, the BMS server 804 can include datastorage for storing historical data. In some embodiments, the local BMSserver 804 can be the local server 656 and/or the local server 702. Insome embodiments, the local BMS server 804 can implement user interfacesfor viewing on a user device 176. The local BMS server 804 includes aBMS normalization API 810 for allowing external systems to communicatewith the local BMS server 804. Furthermore, the local BMS server 804includes BMS components 812. These components may implement the userinterfaces, applications, data storage and/or logging, etc. Furthermore,the local BMS server 804 includes a BMS endpoint 814 for communicatingwith the network engine 816. The BMS endpoint 814 may also connect toother devices, for example, via a local or external network. The BMSendpoint 814 can connect to any type of device capable of communicatingwith the local BMS server 804.

The system 800 includes a network engine 816. The network engine 816 canbe configured to handle network operations for networks of the building.For example, the engine integrations 824 of the network engine 816 canbe configured to facilitate communication via BACnet, Modbus, CAN, N2,and/or any other protocol. In some embodiments, the networkcommunication is non-IP based communication. In some embodiments, thenetwork communication is IP based communication, e.g., Internet enabledsmart devices, BACnet/IP, etc. In some embodiments, the network engine816 can communicate data collected from the building subsystems 122 andpass the data to the local BMS server 804.

In some embodiments, the network engine 816 includes existing enginecomponents 822. The engine components 822 can be configured to implementnetwork features for managing the various building networks that thebuilding subsystems 122 communicate with. The network engine 816 mayfurther include a BMS normalization API 820 that implements integrationwith other external systems. The network engine 816 further includes aBMS connector 818 that facilitates a connection between the networkengine 816 and a BMS endpoint 814. In some embodiments, the BMSconnector 818 collects point data received from the building subsystems122 via the engine integrations 824 and communicates the collectedpoints to the BMS endpoint 814.

In the system 800, the local BMS server 804 can be adapted to facilitatecommunication between the local BMS server 804, the network engine 816,and/or the building subsystems 122 with the cloud platform 106. In someembodiments, the adaption can be implemented by deploying an endpoint802 to the cloud platform 106. The endpoint 802 can be an MQTT and/orSparkplug endpoint, in some embodiments. Furthermore, a cloud platformconnector 806 could be deployed to the local BMS server 804. The cloudplatform connector 806 could facilitate communication between the localBMS server 804 and the cloud platform 106. Furthermore, a BMS APIadapter service 808 can be deployed to the local BMS server 804 toimplement an integration between the cloud platform connector 806 andthe BMS normalization API 810. The BMS API adapter service 808 can forma bridge between the existing BMS components 812 and the cloud platformconnector 806.

Referring now to FIG. 9 , a system 900 including the local BMS server804, the network engine 816, and the cloud platform 106 is shown wherethe network engine 816 includes connectors and an adapter service thatconnect the engine with the local BMS server 804 and the cloud platform106, according to an exemplary embodiment. In the system 900, thenetwork engine 816 can be adapted to facilitate communication directlybetween the network engine 816 and the cloud platform 106.

In the system 900, reusable cloud connector components and/or a reusableadapter service are deployed to the network engine 816 to enable thenetwork engine 816 to communicate directly with the cloud platform 106endpoint 802. In this regard, components of the edge platform 102 can bedeployed to the network engine 816 itself allowing for plug and play onthe engine such that gateway functions can be run on the network engine816 itself.

In the system 900, a cloud platform connector 906 and a cloud platformconnector 904 can be deployed to the network engine 816. The cloudplatform connector 906 and/or the cloud platform connector 904 can beinstances of the cloud platform 806. Furthermore, an endpoint 902 can bedeployed to the local BMS server 804. The endpoint 902 can be asparkplug and/or MQTT endpoint. The cloud platform connector 906 can beconfigured to facilitate communication between the network engine 816and the endpoint 902. In some embodiments, point data can becommunicated between the building subsystems 122 and the endpoint 902.Furthermore, the cloud platform connector 904 can configured tofacilitate communication between the endpoint 802 and the network engine816, in some embodiments. A BMS API adapter service 908 can integratethe cloud platform connector 906 and/or the cloud platform connector 904with the BMS normalization API 820.

Referring now to FIG. 10 , a system 1000 including a gateway 1004including a BMS adapter service application programming interface (API)connecting the network engine 816 to the cloud platform 106 is shown,according to an exemplary embodiment. In the system 1000, the gateway1004 can facilitate communication between the cloud platform 106 and thenetwork engine 816, in some embodiments. The gateway 1004 can be aphysical computing system and/or device, e.g., one of the gateways112-116. The gateway 1004 can be the instance of the edge platform 102described in FIG. 5 and/or FIG. 6A.

In some embodiments, the gateway 1004 can be deployed on a computingnode of a building that the gateway software, e.g., the components1006-1014. In some embodiments, the gateway 1004 can be installed in abuilding as a new physical device. In some embodiments, gateway devicescan be built on computing nodes of a network to communicate with legacydevices, e.g., the network engine 816 and/or the building subsystems122. In some embodiments, the gateway 1004 can be deployed to acomputing system to enable the network engine 816 to communicate withthe cloud platform 106. In some embodiments, the gateway 1004 is a newphysical device and/or is a modified existing gateway. In someembodiments, the cloud platform 106 can identify what physical devicesare near and/or are connected to the network engine 816. The cloudplatform 106 can deploy the gateway 1004 to the identified physicaldevice. Some pieces of the software stack of the gateway may be legacy.

The gateway 1004 can include a cloud platform connector 1006 configuredto facilitate communication between the endpoint 802 of the cloudplatform 106 and/or the gateway 1004. The cloud platform connector 1006can be an instance of the cloud platform 806 and/or the connector 504.The gateway 1004 can further include services 1008. The services 1008can be the services described with reference to FIGS. 6B and/or 7 . Thegateway 1004 further includes a building normalization 1010. Thebuilding normalization 1010 can be the same as or similar to thebuilding normalizations layers 712, 728, and/or 748 described withreference to FIG. 7 . The gateway 1004 further includes a BMS APIadapter service 1012 that can be configured to facilitate communicationwith the BMS normalization API 820. The BMS API adapter service 1012 canbe the same as and/or similar to the BMS API adapter service 808 and/orthe BMS API adapter service 908. The gateway 1004 may further includeintegrations endpoint 1014 which may facilitate communication directlywith the building subsystems 122.

In some embodiments, the gateway 1004, via the cloud platform connector1006 and/or the BMS API adapter service 1012 can facilitate directcommunication between the network engine 816 and the cloud platform 106.For example, data collected from the building subsystems 122 can becollected via the engine integrations 824 and communicated to thegateway 1004 via the BMS normalization API 820 and the BMS API adapterservice 1012. The cloud platform connector 1006 can communicate thecollected data points to the endpoint 802 of the cloud platform 106. TheBMS API adapter service 1012 and the BMS API adapter service 808 can becommon adapters which can make calls and/or responses to the BMSnormalization API 810 and/or the BMS normalization API 820.

The gateway 1004 can allow for the addition of services (e.g., theservices 1008) and/or integrations (e.g., integrations endpoint 1014) tothe system 1000 that may not be deployable to the local BMS server 804and/or the network engine 816. In FIG. 10 , the network engine 816 isnot adapted but is brought into the ecosystem of the system 1000 throughthe gateway 1004, in comparison to the deployed connectivity to thelocal BMS server 804 in FIG. 8 and the deployed connectivity to thenetwork engine 816 of FIG. 9 .

Referring now to FIG. 11 , a system 1100 including a surveillance camera1106 and a smart thermostat 1108 for a zone 1102 of the building thatuses the edge platform 102 to facilitate event based control is shown,according to an exemplary embodiment. In the system 1100, thesurveillance camera 1106 and/or the smart thermostat 1108 can rungateway components of the edge platform 102. For example, thesurveillance camera 1106 and/or the smart thermostat 1108 could includethe connector 504. In some embodiments, the surveillance camera 1106and/or the smart thermostat 1108 can include an endpoint, e.g., an MQTTendpoint such as the endpoints described in FIGS. 7-10 .

In some embodiments, the surveillance camera 1106 and/or the smartthermostat 1108 are themselves gateways. The gateways may be built in aportable language such as RUST and embedded within the surveillancecamera 1106 and/or the smart thermostat 1108. In some embodiments, oneor both of the surveillance camera 1106 and/or the smart thermostat 1108can implement a building device broker 1105. In some embodiments, thebuilding device broker 1105 can be implemented on a separate buildinggateway, e.g., the device/gateway 720 and/or the gateway 1004.

In some embodiments, the surveillance camera 1106 can perform motiondetection, e.g., detect the presence of the user 1104. In someembodiments, responsive to detecting the user 1104, the surveillancecamera 1106 can generate an occupancy trigger event. The occupancytrigger event can be published to a topic by the surveillance camera1106. The building device broker 1105 can, in some embodiments, handlevarious topics, handle topic subscriptions, topic publishing, etc. Insome embodiments, the smart thermostat 1108 may be subscribed to anoccupancy topic for the zone 1102 that the surveillance camera 1106publishes occupancy trigger events to. The smart thermostat 1108 may, insome embodiments, adjust a temperature setpoint responsive to receivingan occupancy trigger event being published to the topic.

In some embodiments, an IoT platform and/or other application issubscribed to the topic that the surveillance camera 1106 subscribes toand commands the smart thermostat 1108 to adjust its temperaturesetpoint responsive to detecting the occupancy trigger event. In someembodiments the events, topics, publishing, and/or subscriptions areMQTT based messages. In some embodiments, the event communicated by thesurveillance camera 1106 is an Open Network Video Interface Forum(ONVIF) event.

Referring now to FIG. 12 , a system 1200 including a cluster basedgateway 1206 that runs micro-services for facilitating communicationbetween building subsystems 122 and cloud applications 1204 is shown,according to an exemplary embodiment. In some embodiments, to collecttelemetry data from building subsystems 122 (e.g., BMS systems, firesystems, security systems, etc.), the system 1200 includes a gatewaywhich collects data from the building subsystems 122 and communicatesthe information to the cloud, e.g., to the cloud applications 1204, thecloud platform 106, etc.

In some embodiments, such a gateway could include a mini personalcomputer (PC) with various software connectors that connect the gatewayto the building subsystems 122, e.g., a BACnet connector, an OPC/UAconnector, a Modbus connector, a Transmission Control Protocol andInternet Protocol TCP/IP connector, and/or various other protocols. Insome embodiments, the mini PC runs an operating system that hostsvarious micro-services for the communication.

In some embodiments, hosting a mini PC in a building has issues. Forexample, the operating system on the mini PC may need to be updated forsecurity patches and/or operating system updates. This might result inimpacting the micro-services which the mini PC runs. Micro-services maystop, may be deleted, and/or may have to updated to manage the changesin operating system. Furthermore, the mini PC may need to be managed bya local building information technologies (IT) team. The mini PC may beimpacted by the building network and/or IT policies on the network. Themini PC may need to be commissioned by a technician visit to a localsite. Similarly, a site visit by the technician may be required fortrouble shooting any time that the mini PC encounters issues. For anincrease in demand for the services of the mini PC, a technician mayneed to visit the site to make physical and/or software updates to themini PC, which may incur additional cost for field testing and/orcertifying new hardware and/or software.

To solve one or more of these issues, the system 1200 could include acluster gateway 1206. The cluster gateway 1206 cold be a clusterincluding one or more micro-services in containers. For example, thecluster gateway 1206 could be a Kubernetes cluster with docker instancesof micro-services. For example, the cluster gateway 1206 could run aBACnet micro-serve 1208, a Modbus micro-service 1210, and/or an OPC/Umicro-service 1212. The cluster gateway 1206 can replace the mini PCwith a more generic hardware device with the capability to host one ormore different and/or changing containers.

In some embodiments, software updates to the cluster gateway 1206 can bemanaged centrally by a gateway manager 1202. The gateway manager 1202could push new micro-services, e.g., a BACnet micro-service, a Modbusmicro-service 1210, and/or a OPC/UA micro-service to the cluster gateway1206. In this manner, software upgrades are not dependent on an ITinfrastructure at a building. A building owner may manage the underlyinghardware that the cluster gateway 1206 runs on while the cluster gateway1206 may be managed by a separate development entity. In someembodiments, commissioning for the cluster gateway 1206 is managedremotely. Furthermore, the workload for the cluster gateway 1206 can bemanaged, in some embodiments. In some embodiments, the cluster gateway1206 runs independent of the hardware on which it is hosted, and thusany underlying hardware upgrades do not require testing for softwaretools and/or software stack of the cluster gateway 1206.

The gateway manager 1202 can be configured to install and/or upgrade thecluster gateway 1206. The gateway manager 1202 can make upgrades to themicro-services that the cluster gateway 1206 runs and/or make upgradesto the operating environment of the cluster gateway 1206. In someembodiments, upgrades, security patches, new software, etc. can bepushed by the gateway manager 1202 to the cluster gateway 1206 in anautomated manner. In some embodiments, errors and/or issues of thecluster gateway 1206 can be managed remotely and users can receivenotifications regarding the errors and/or issues. In some embodiments,commissioning for the cluster gateway 1206 can be automated and thecluster gateway 1206 can be set up to run on a variety of differenthardware environments.

In some embodiments, the cluster gateway 1206 can provide telemetry dataof the building subsystems 122 to the cloud applications 1204.Furthermore, the cloud applications 1204 can provide command and controldata to the cluster gateway 1206 for controlling the building subsystems122. In some embodiments, command and/or control operations can behandled by the cluster gateway 1206. This may provide the ability tomanage the demand and/or bandwidth requirements of the site bycommanding the various containers including the micro-services on thecluster gateway 1206. This may allow for the management of upgradesand/or testing. Furthermore, this may allow for the replication ofdevelopment, testing, and/or production environments. The cloudapplications 1204 could be energy management applications, optimizationapplications, etc. In some embodiments, the cloud applications 1204 arethe applications 110. In some embodiments, the cloud applications 1204are the cloud platform 106.

Referring to FIG. 13 , illustrated is a flow diagram of an examplemethod 1300 for deploying gateway components on one or more computingsystems of a building, according to an exemplary embodiment. In variousembodiments, the local server 702 performs the method 1300. However, itshould be understood that any computing system described herein mayperform any or all of the operations described in connection with themethod 1300. For example, in some embodiments, the cloud platform 106performs method 1300. In yet other embodiments, the local server 702 mayperform the method 1300. For example, the cloud platform 106 may performmethod 1300 to deploy gateway components on one or more computingdevices (e.g., the local server 702, the device/gateway 720, the localBMS server 804, the network engine 816, the gateway 1004, the gatewaymanager 1202, the cluster gateway 1206, any other computing systems ordevices described herein, etc.) in a building, which may collect, store,process, or otherwise access data samples received via one or morephysical building devices. The data samples may be sensor data,operational data, configuration data, or any other data describedherein. The computing system performing the operations of the method1300 is referred to herein as the “building system.”

At step 1305, the building system can store one or more gatewaycomponents on one or more storage devices of the building system. Thebuilding system may be located within, or located remote from, thebuilding to which the building system corresponds. The gatewaycomponents stored on the storage devices of the building system canfacilitate communication with a cloud platform (e.g., the cloud platform106) and facilitate communication with a physical building device (e.g.,the device/gateway 720, the building subsystems 122, etc.). The gatewaycomponents can be, for example, any of the, connectors, buildingnormalization layers, services, or integrations described herein,including but certainly not limited to the connector 704, services706-710, a building normalization layer 712, and integrations 714-718,among other components, software, integrations, configuration settings,or any other software-related data described in connection with FIGS.1-12 .

At step 1310, the building system can identify a computing system of thebuilding that is in communication with the physical building device, thephysical building device storing one or more data samples. Identifyingthe computing system can include accessing a database or lookup table ofcomputing systems or devices that are present within or otherwiseassociated with managing one or more aspects of the building. In someimplementations, the building system can query a network of the buildingto which the building system is communicatively coupled, to identify oneor more other computing systems on the network. The computing systemsmay be associated with respective identifiers, and may communicate withthe building system via the network or another suitable communicationsinterface, connector, or integration, as described herein. The computingsystem may be in communication with one or more physical buildingdevices, as described herein. In some implementations, the buildingsystem can identify each of the computing systems of the building thatare in communication with at least one physical building device.

At step 1315, the building system can deploy the one or more gatewaycomponents to the identified computing system responsive to identifyingthat the computing system is in communication with the physical buildingdevice(s). For example, the building system can utilize one or morecommunication channels, which may be established via a network of thebuilding, to transmit the gateway components to each of the identifiedcomputing systems of the building. Deploying the one or more gatewaycomponents can include installing or otherwise configuring the gatewaycomponents to execute at the one or more identified computing systems.Generally, the gateway components can be executed to perform any of theoperations described herein. Deploying the gateway components caninclude forming storing computer-executable instructions correspondingto the gateway components at the identified computing systems. In someimplementations, the particular gateway components deployed at anidentified computing system can be selected based on the type of thephysical building device to which the identified computing system isconnected. Likewise, in some embodiments, the particular gatewaycomponents deployed at an identified computing system can be selected tocorrespond to an operation, type, or processing capability of theidentified computing system, among other factors as described herein.Deploying the gateway components may include storing the gatewaycomponents in one or more predetermined memory regions at the computingsystem (e.g., in a particular directory, executable memory region,etc.), and may include installing, configuring, or otherwise applyingone or more configuration settings for the gateway components or for theoperation of the computing system.

As described herein, the one or more gateway components can include anytype of software component, hardware configuration settings, orcombinations thereof. The gateway components may includeprocessor-executable instructions, which can be executed by thecomputing system to which the gateway component(s) are deployed. The oneor more gateway components can cause the computing system to communicatewith the physical building device to receive the one or more datasamples (e.g., via one or more networks or communication interfaces).Additionally, the one or more gateway components cause the computingsystem to communicate the one or more data samples to the cloudplatform. For example, the gateway components can include one or moreadapters or communication software APIs that facilitate communicationbetween computing devices within, and external to, the building. Thegateway components may include adapters that cause the computing systemto communicate with one or more network engines. The gateway componentscan include instructions that, when executed by the computing system,cause the computing system to detect a new physical building deviceconnected to the computing system (e.g., by searching through differentconnected devices by device identifier, etc.), and then search a devicelibrary for a configuration of the new physical building device. Usingthe configuration for the new physical device, the gateway componentscan cause the computing system to implement the configuration tofacilitate communication with the new physical building device. Thegateway components can also perform a discovery process to discover theconfiguration for the new physical building device and store theconfiguration in the device library, for example, if the device librarydid not include the configuration. The device library can be stored atthe cloud platform or on the one or more gateway components themselves.In some implementations, the device library is distributed across one ormore instances of the one or more gateway components in a plurality ofdifferent buildings, and may be retrieved, for example, by accessing oneor more networks to communicate with the multiple instances of gatewaycomponents to retrieve portions of, or all of, the device library. Thegateway components can receive one or more values for control points ofthe physical building device, for example, from the building system,from the cloud platform, or from another system or device describedherein, and communicate the one or more values to the control points ofthe physical building device via the one or more gateway components.

The one or more gateway components can include a building service thatcauses the computing system to generate data based on the one or moredata samples, which may be analytics data or any other type of datadescribed herein that may be based on or associated with the datasamples. When deploying the gateway components, the building system canidentify one or more requirements for the building service, or any otherof the gateway components. The requirements may include requiredprocessing resources, storage resources, data availability, or apresence of another building service executing at the computing system.The building system can query the computing system to determine thecurrent operating characteristics (e.g., processing resources, storageresources, data availability, or a presence of another building serviceexecuting at the computing system, etc.), to determine that thecomputing system meets the one or more requirements for the gatewaycomponent(s). If the computing system meets the requirements, thebuilding system can deploy the corresponding gateway components to thecomputing system. If the requirements are not met, the building systemmay deploy the gateway components to another computing system. Thebuilding system can periodically query, or otherwise receive messagesfrom, the computing system that indicate the current operatingcharacteristics of the computing system. In doing so, the buildingsystem can identify whether the requirements for the building service(or other gateway components) are no longer met by the computing system.If the requirements are no longer met, the building system can move(e.g., terminate execution of the gateway components or remove thegateway components from the computing system, and re-deploy the gatewaycomponents) the gateway components (e.g., the building service) from thecomputing system to a different computing system that meets the one ormore requirements of the building service or gateway component(s).

Referring to FIG. 14 is a flow diagram of an example method 1400 fordeploying gateway components on a local BMS server, according to anexemplary embodiment. In various embodiments, the local server 702performs the method 1400. However, it should be understood that anycomputing system described herein may perform any or all of theoperations described in connection with the method 1400. For example, insome embodiments, the cloud platform 106 performs method 1400. In yetother embodiments, the local server 702 may perform the method 1400. Forexample, the cloud platform 106 may perform method 1400 to deploygateway components on one or more computing devices (e.g., the localserver 702, the device/gateway 720, the local BMS server 804, thenetwork engine 816, the gateway 1004, the gateway manager 1202, thecluster gateway 1206, any other computing systems or devices describedherein, etc.) in a building, which may collect, store, process, orotherwise access data samples received via one or more physical buildingdevices. The data samples may be sensor data, operational data,configuration data, or any other data described herein. The computingsystem performing the operations of the method 1400 is referred toherein as the “building system.”

At step 1405, the building system can store one or more gatewaycomponents on one or more storage devices of the building system. Thebuilding system may be located within, or located remote from, thebuilding to which the building system corresponds. The gatewaycomponents stored on the storage devices of the building system canfacilitate communication with a cloud platform (e.g., the cloud platform106) and facilitate communication with a physical building device (e.g.,the device/gateway 720, the building subsystems 122, etc.). The gatewaycomponents can be, for example, any of the, connectors, buildingnormalization layers, services, or integrations described herein,including but certainly not limited to the connector 704, services706-710, a building normalization layer 712, and integrations 714-718,among other components, software, integrations, configuration settings,or any other software-related data described in connection with FIGS.1-12 .

At step 1410, the building system can deploy the one or more gatewaycomponents to a BMS server, which may be in communication with one ormore building devices via one or more network engines, as shown in FIG.8 . The BMS server can execute one or more BMS applications on the datasamples received (e.g., via one or more networks or communicationinterfaces) from the physical building devices. To deploy the gatewaycomponents, the building system can utilize one or more communicationchannels, which may be established via a network of the building, totransmit the gateway components to the BMS server of the building.Deploying the one or more gateway components can include installing orotherwise configuring the gateway components to execute at the BMSserver. Generally, the gateway components can be executed to perform anyof the operations described herein. Deploying the gateway components caninclude forming storing computer-executable instructions correspondingto the gateway components at the BMS server. In some implementations,the particular gateway components deployed at the BMS server can beselected based on the type of the physical building device(s) to whichthe BMS server is connected (e.g., via the network engine, etc.), or toother types of computing systems with which the BMS server is incommunication. Likewise, in some embodiments, the particular gatewaycomponents deployed at the BMS server can be selected to correspond toan operation, type, or processing capability of the BMS server, amongother factors as described herein. Deploying the gateway components mayinclude storing the gateway components in one or more predeterminedmemory regions at the BMS server (e.g., in a particular directory,executable memory region, etc.), and may include installing,configuring, or otherwise applying one or more configuration settingsfor the gateway components or for the operation of the BMS server.

As described herein, the one or more gateway components can include anytype of software component, hardware configuration settings, orcombinations thereof. The gateway components may includeprocessor-executable instructions, which can be executed by the BMSserver to which the gateway component(s) are deployed. The one or moregateway components can cause the BMS server to communicate with thephysical building device to receive the one or more data samples (e.g.,via one or more networks or communication interfaces). Additionally, theone or more gateway components cause the BMS server to communicate theone or more data samples to the cloud platform. For example, the gatewaycomponents can include one or more adapters or communication softwareAPIs that facilitate communication between computing devices within, andexternal to, the building. The gateway components may include adaptersthat cause the BMS server to communicate with one or more networkengines. The gateway components can include instructions that, whenexecuted by the BMS server, cause the BMS server to detect a newphysical building device connected to the BMS server (e.g., by searchingthrough different connected devices by device identifier, etc.), andthen search a device library for a configuration of the new physicalbuilding device. Using the configuration for the new physical device,the gateway components can cause the BMS server to implement theconfiguration to facilitate communication with the new physical buildingdevice. The gateway components can also perform a discovery process todiscover the configuration for the new physical building device andstore the configuration in the device library, for example, if thedevice library did not include the configuration. The device library canbe stored at the cloud platform or on the one or more gateway componentsthemselves. In some implementations, the device library is distributedacross one or more instances of the one or more gateway components in aplurality of different buildings, and may be retrieved, for example, byaccessing one or more networks to communicate with the multipleinstances of gateway components to retrieve portions of, or all of, thedevice library. The gateway components can receive one or more valuesfor control points of the physical building device, for example, fromthe building system, from the cloud platform, or from another system ordevice described herein, and communicate the one or more values to thecontrol points of the physical building device via the one or moregateway components.

The one or more gateway components can include a building service thatcauses the BMS server to generate data based on the one or more datasamples, which may be analytics data or any other type of data describedherein that may be based on or associated with the data samples. Whendeploying the gateway components, the building system can identify oneor more requirements for the building service, or any other of thegateway components. The requirements may include required processingresources, storage resources, data availability, or a presence ofanother building service executing at the BMS server. The buildingsystem can query the BMS server to determine the current operatingcharacteristics (e.g., processing resources, storage resources, dataavailability, or a presence of another building service executing at theBMS server, etc.), to determine that the BMS server meets the one ormore requirements for the gateway component(s). If the BMS server meetsthe requirements, the building system can deploy the correspondinggateway components to the BMS server. If the requirements are not met,the building system may deploy the gateway components to another BMSserver. The building system can periodically query, or otherwise receivemessages from, the BMS server that indicate the current operatingcharacteristics of the BMS server. In doing so, the building system canidentify whether the requirements for the building service (or othergateway components) are no longer met by the BMS server. If therequirements are no longer met, the building system can move (e.g.,terminate execution of the gateway components or remove the gatewaycomponents from the BMS server, and re-deploy the gateway components)the gateway components (e.g., the building service) from the BMS serverto a different computing system that meets the one or more requirementsof the building service or gateway component(s). In someimplementations, the building system can identify communicationprotocols corresponding to the physical building devices associated withthe BMS server, and deploy one or more integration components (e.g.,associated with the physical building devices) to the BMS server tocommunicate with the one or more physical building devices via the oneor more communication protocols. The integration components can be partof the one or more gateway components.

Referring to FIG. 15 is a flow diagram of an example method 1500 fordeploying gateway components on a network engine, according to anexemplary embodiment. In various embodiments, the local server 702performs the method 1500. However, it should be understood that anycomputing system described herein may perform any or all of theoperations described in connection with the method 1500. For example, insome embodiments, the cloud platform 106 performs method 1500. In yetother embodiments, the local server 702 may perform the method 1500. Forexample, the cloud platform 106 may perform method 1500 to deploygateway components on one or more computing devices (e.g., the localserver 702, the device/gateway 720, the local BMS server 804, thenetwork engine 816, the gateway 1004, the gateway manager 1202, thecluster gateway 1206, any other computing systems or devices describedherein, etc.) in a building, which may collect, store, process, orotherwise access data samples received via one or more physical buildingdevices. The data samples may be sensor data, operational data,configuration data, or any other data described herein. The computingsystem performing the operations of the method 1500 is referred toherein as the “building system.”

At step 1505, the building system can store one or more gatewaycomponents on one or more storage devices of the building system. Thebuilding system may be located within, or located remote from, thebuilding to which the building system corresponds. The gatewaycomponents stored on the storage devices of the building system canfacilitate communication with a cloud platform (e.g., the cloud platform106) and facilitate communication with a physical building device (e.g.,the device/gateway 720, the building subsystems 122, etc.). The gatewaycomponents can be, for example, any of the, connectors, buildingnormalization layers, services, or integrations described herein,including but certainly not limited to the connector 704, services706-710, a building normalization layer 712, and integrations 714-718,among other components, software, integrations, configuration settings,or any other software-related data described in connection with FIGS.1-12 .

At step 1510, the building system can deploy the one or more gatewaycomponents to a network engine, which may implement one or more localcommunications networks for one or more building devices of the buildingand receive one or more data samples from the one or more buildingdevices, as described herein. To deploy the gateway components, thebuilding system can utilize one or more communication channels, whichmay be established via a network of the building, to transmit thegateway components to the Network engine of the building. Deploying theone or more gateway components can include installing or otherwiseconfiguring the gateway components to execute at the network engine.Generally, the gateway components can be executed to perform any of theoperations described herein. Deploying the gateway components caninclude forming storing computer-executable instructions correspondingto the gateway components at the network engine. In someimplementations, the particular gateway components deployed at thenetwork engine can be selected based on the type of the physicalbuilding device(s) to which the network engine is connected (e.g., viaone or more networks implemented by the network engine, etc.), or toother types of computing systems with which the network engine is incommunication. Likewise, in some embodiments, the particular gatewaycomponents deployed at the network engine can be selected to correspondto an operation, type, or processing capability of the network engine,among other factors as described herein. Deploying the gatewaycomponents may include storing the gateway components in one or morepredetermined memory regions at the network engine (e.g., in aparticular directory, executable memory region, etc.), and may includeinstalling, configuring, or otherwise applying one or more configurationsettings for the gateway components or for the operation of the networkengine.

As described herein, the one or more gateway components can include anytype of software component, hardware configuration settings, orcombinations thereof. The gateway components may includeprocessor-executable instructions, which can be executed by the networkengine to which the gateway component(s) are deployed. The one or moregateway components can cause the network engine to communicate with thephysical building device to receive the one or more data samples (e.g.,via one or more networks or communication interfaces). Additionally, theone or more gateway components cause the network engine to communicatethe one or more data samples to the cloud platform. For example, thegateway components can include one or more adapters or communicationsoftware APIs that facilitate communication between computing deviceswithin, and external to, the building. The gateway components mayinclude adapters that cause the network engine to communicate with oneor more other computing systems (e.g., a BMS server, other buildingsubsystems, etc.). The gateway components can include instructions that,when executed by the network engine, cause the network engine to detecta new physical building device connected to the network engine (e.g., bysearching through different connected devices by device identifier,etc.), and then search a device library for a configuration of the newphysical building device. Using the configuration for the new physicaldevice, the gateway components can cause the network engine to implementthe configuration to facilitate communication with the new physicalbuilding device. The gateway components can also perform a discoveryprocess to discover the configuration for the new physical buildingdevice and store the configuration in the device library, for example,if the device library did not include the configuration. The devicelibrary can be stored at the cloud platform or on the one or moregateway components themselves. In some implementations, the devicelibrary is distributed across one or more instances of the one or moregateway components in a plurality of different buildings, and may beretrieved, for example, by accessing one or more networks to communicatewith the multiple instances of gateway components to retrieve portionsof, or all of, the device library. The gateway components can receiveone or more values for control points of the physical building device,for example, from the building system, from the cloud platform, or fromanother system or device described herein, and communicate the one ormore values to the control points of the physical building device viathe one or more gateway components.

The one or more gateway components can include a building service thatcauses the network engine to generate data based on the one or more datasamples, which may be analytics data or any other type of data describedherein that may be based on or associated with the data samples. Whendeploying the gateway components, the building system can identify oneor more requirements for the building service, or any other of thegateway components. The requirements may include required processingresources, storage resources, data availability, or a presence ofanother building service executing at the network engine. The buildingsystem can query the network engine to determine the current operatingcharacteristics (e.g., processing resources, storage resources, dataavailability, or a presence of another building service executing at thenetwork engine, etc.), to determine that the network engine meets theone or more requirements for the gateway component(s). If the networkengine meets the requirements, the building system can deploy thecorresponding gateway components to the network engine. If therequirements are not met, the building system may deploy the gatewaycomponents to another network engine. The building system canperiodically query, or otherwise receive messages from, the networkengine that indicate the current operating characteristics of thenetwork engine. In doing so, the building system can identify whetherthe requirements for the building service (or other gateway components)are no longer met by the network engine. If the requirements are nolonger met, the building system can move (e.g., terminate execution ofthe gateway components or remove the gateway components from the networkengine, and re-deploy the gateway components) the gateway components(e.g., the building service) from the network engine to a differentcomputing system that meets the one or more requirements of the buildingservice or gateway component(s). In some implementations, the buildingsystem can identify communication protocols corresponding to thephysical building devices associated with the network engine, and deployone or more integration components (e.g., associated with the physicalbuilding devices) to the network engine to communicate with the one ormore physical building devices via the one or more communicationprotocols. The integration components can be part of the one or moregateway components.

Referring to FIG. 16 is a flow diagram of an example method 1600 fordeploying gateway components on a dedicated gateway, according to anexemplary embodiment. In various embodiments, the local server 702performs the method 1600. However, it should be understood that anycomputing system described herein may perform any or all of theoperations described in connection with the method 1600. For example, insome embodiments, the cloud platform 106 performs method 1600. In yetother embodiments, the local server 702 may perform the method 1600. Forexample, the cloud platform 106 may perform method 1600 to deploygateway components on one or more computing devices (e.g., the localserver 702, the device/gateway 720, the local BMS server 804, thenetwork engine 816, the gateway 1004, the gateway manager 1202, thecluster gateway 1206, any other computing systems or devices describedherein, etc.) in a building, which may collect, store, process, orotherwise access data samples received via one or more physical buildingdevices. The data samples may be sensor data, operational data,configuration data, or any other data described herein. The computingsystem performing the operations of the method 1600 is referred toherein as the “building system.”

At step 1605, the building system can store one or more gatewaycomponents on one or more storage devices of the building system. Thebuilding system may be located within, or located remote from, thebuilding to which the building system corresponds. The gatewaycomponents stored on the storage devices of the building system canfacilitate communication with a cloud platform (e.g., the cloud platform106) and facilitate communication with a physical building device (e.g.,the device/gateway 720, the building subsystems 122, etc.). The gatewaycomponents can be, for example, any of the, connectors, buildingnormalization layers, services, or integrations described herein,including but certainly not limited to the connector 704, services706-710, a building normalization layer 712, and integrations 714-718,among other components, software, integrations, configuration settings,or any other software-related data described in connection with FIGS.1-12 .

At step 1610, the building system can deploy the one or more gatewaycomponents to a physical gateway, which may communicate and receive datasamples from one or more physical building devices of the building, andprovide the data samples to the cloud platform. To deploy the gatewaycomponents, the building system can utilize one or more communicationchannels, which may be established via a network of the building, totransmit the gateway components to the physical gateway of the building.Deploying the one or more gateway components can include installing orotherwise configuring the gateway components to execute at the physicalgateway. Generally, the gateway components can be executed to performany of the operations described herein. Deploying the gateway componentscan include forming storing computer-executable instructionscorresponding to the gateway components at the physical gateway. In someimplementations, the particular gateway components deployed at thephysical gateway can be selected based on the type of the physicalbuilding device(s) to which the physical gateway is connected, or toother types of computing systems with which the physical gateway is incommunication. Likewise, in some embodiments, the particular gatewaycomponents deployed at the physical gateway can be selected tocorrespond to an operation, type, or processing capability of thephysical gateway, among other factors as described herein. Deploying thegateway components may include storing the gateway components in one ormore predetermined memory regions at the physical gateway (e.g., in aparticular directory, executable memory region, etc.), and may includeinstalling, configuring, or otherwise applying one or more configurationsettings for the gateway components or for the operation of the physicalgateway.

As described herein, the one or more gateway components can include anytype of software component, hardware configuration settings, orcombinations thereof. The gateway components may includeprocessor-executable instructions, which can be executed by the physicalgateway to which the gateway component(s) are deployed. The one or moregateway components can cause the physical gateway to communicate withthe physical building device to receive the one or more data samples(e.g., via one or more networks or communication interfaces).Additionally, the one or more gateway components cause the physicalgateway to communicate the one or more data samples to the cloudplatform. For example, the gateway components can include one or moreadapters or communication software APIs that facilitate communicationbetween computing devices within, and external to, the building. Thegateway components may include adapters that cause the physical gatewayto communicate with one or more other computing systems (e.g., a BMSserver, other building subsystems, etc.). The gateway components caninclude instructions that, when executed by the physical gateway, causethe physical gateway to detect a new physical building device connectedto the physical gateway (e.g., by searching through different connecteddevices by device identifier, etc.), and then search a device libraryfor a configuration of the new physical building device. Using theconfiguration for the new physical device, the gateway components cancause the physical gateway to implement the configuration to facilitatecommunication with the new physical building device. The gatewaycomponents can also perform a discovery process to discover theconfiguration for the new physical building device and store theconfiguration in the device library, for example, if the device librarydid not include the configuration. The device library can be stored atthe cloud platform or on the one or more gateway components themselves.In some implementations, the device library is distributed across one ormore instances of the one or more gateway components in a plurality ofdifferent buildings, and may be retrieved, for example, by accessing oneor more networks to communicate with the multiple instances of gatewaycomponents to retrieve portions of, or all of, the device library. Thegateway components can receive one or more values for control points ofthe physical building device, for example, from the building system,from the cloud platform, or from another system or device describedherein, and communicate the one or more values to the control points ofthe physical building device via the one or more gateway components.

At step 1615, the building system can identify a building device (e.g.,via the gateway on which the gateway components are deployed) that isexecuting one or more building services that does not meet therequirements for executing the one or more building services. Thebuildings services, for example, may cause the building device togenerate data based on the one or more data samples, which may beanalytics data or any other type of data described herein that may bebased on or associated with the data samples. The requirements mayinclude required processing resources, storage resources, dataavailability, or a presence of another building service executing at thebuilding device. The building system can query the building device todetermine the current operating characteristics (e.g., processingresources, storage resources, data availability, or a presence ofanother building service executing at the building device, etc.), todetermine that the building device meets the one or more requirementsfor the building service(s). If the requirements are not met, thebuilding system can perform step 1620. The building system mayperiodically query the building device to determine whether the buildingdevice meets the requirements for the building services.

At step 1620, the building system can cause (e.g., by transmittingcomputer-executable instructions to the building device and the gateway)the building services to be relocated to the gateway on which thegateway component(s) are deployed. To do so, the building system canmove the building services from the building device to the gateway onwhich the gateway component(s) are deployed, for example, by terminatingexecution of the building services or removing the building servicesfrom the building device, and then re-deploying or copying the buildingservices, including any application state information or configurationinformation, to the gateway.

Referring to FIG. 17 is a flow diagram of an example method 1700 forimplementing gateway components on a building device, according to anexemplary embodiment. In various embodiments, the device/gateway 720performs the method 1700. However, it should be understood that anycomputing system on which gateway components are deployed, as describedherein, may perform any or all of the operations described in connectionwith the method 1700. For example, in some embodiments, the BMS server804, the network engine 816, the gateway 1004, the building brokerdevice 1105, the gateway manager 1202, or the cluster gateway 1206performs method 1700. In yet other embodiments, the local server 702 mayperform the method 1700. The computing system performing the operationsof the method 1700 is referred to herein as the “building device.”

At step 1705, the building device can receive one or more gatewaycomponents and implement the one or more gateway components on thebuilding device. The one or more gateway components can facilitatecommunication between a cloud platform and the building device. Thegateway components can be, for example, any of the, connectors, buildingnormalization layers, services, or integrations described herein,including but certainly not limited to the connector 704, services706-710, a building normalization layer 712, and integrations 714-718,among other components, software, integrations, configuration settings,or any other software-related data described in connection with FIGS.1-12 . The building device can receive the gateway components from anytype of computing device described herein that can deploy the gatewaycomponents to the building device, including the cloud platform 106, theBMS server 804, or the network engine 816, among others.

At step 1710, the building device can identify a physical deviceconnected to the building device based on the one or more gatewaycomponents. For example, the gateway components can include instructionsthat, when executed by the physical gateway, cause the physical gatewayto detect a physical device connected to the physical gateway (e.g., bysearching through different connected devices by device identifier,etc.). then The gateway components can receive one or more values forcontrol points of the physical device, for example, from the buildingsystem, from the cloud platform, or from another system or devicedescribed herein, and communicate the one or more values to the controlpoints of the physical device via the one or more gateway components.

At step 1715, the building device can search a library of configurationsfor a plurality of different physical devices with the identity of thephysical device to identify a configuration for collecting data samplesfrom the physical device connected to the building device and retrievethe configuration. Search a device library for a configuration of thephysical device. The gateway components can also perform a discoveryprocess to discover the configuration for the physical device and storethe configuration in the device library, for example, if the devicelibrary did not include the configuration. The device library can bestored at the cloud platform or on the one or more gateway componentsthemselves. In some implementations, the device library is distributedacross one or more instances of the one or more gateway components in aplurality of different buildings, and may be retrieved, for example, byaccessing one or more networks to communicate with the multipleinstances of gateway components to retrieve portions of, or all of, thedevice library.

At step 1720, the building device can implement the configuration forthe one or more gateway components. Using the configuration for thephysical device, the gateway components can cause the physical gatewayto implement the configuration to facilitate communication with thephysical device. The configuration may include configuration forcommunication hardware (e.g., wireless or wired communicationsinterfaces, etc.) that configure the communication hardware tocommunicate with the physical device. The configuration can specify acommunication protocol that can be used to communicate with the physicaldevice, and may include computer-executable instructions that, whenexecuted, cause the building device to execute an API that carries outthe communication protocol to communicate with the physical device.

At step 1725, the building device can collect one or more data samplesfrom the physical device based on the one or more gateway components andthe configuration. For example, the gateway components or theconfiguration can include an API, or other computer-executableinstructions, that the building device can utilize to communicate withand retrieve one or more data samples from the physical device. The datasamples can be, for example, sensor data, operational data,configuration data, or any other data described herein. Additionally,the building device can utilize one or more of the gateway components tocommunicate the data samples to another computing system, such as thecloud platform, a BMS server, a network engine, or a physical gateway,among others.

Referring to FIG. 18 is a flow diagram of an example method 1800 fordeploying gateway components to perform a building control algorithm,according to an exemplary embodiment. In various embodiments, the localserver 702 performs the method 1800. However, it should be understoodthat any computing system described herein may perform any or all of theoperations described in connection with the method 1800. For example, insome embodiments, the cloud platform 106 performs method 1800. In yetother embodiments, the local server 702 may perform the method 1800. Forexample, the cloud platform 106 may perform method 1800 to deploygateway components on one or more computing devices (e.g., the localserver 702, the device/gateway 720, the local BMS server 804, thenetwork engine 816, the gateway 1004, the gateway manager 1202, thecluster gateway 1206, any other computing systems or devices describedherein, etc.) in a building, which may collect, store, process, orotherwise access data samples received via one or more physical buildingdevices. The data samples may be sensor data, operational data,configuration data, or any other data described herein. The computingsystem performing the operations of the method 1800 is referred toherein as the “building system.”

At step 1805, the building system can store one or more gatewaycomponents on one or more storage devices of the building system. Thebuilding system may be located within, or located remote from, thebuilding to which the building system corresponds. The gatewaycomponents stored on the storage devices of the building system canfacilitate communication with a cloud platform (e.g., the cloud platform106) and facilitate communication with a physical building device (e.g.,the device/gateway 720, the building subsystems 122, etc.). The gatewaycomponents can be, for example, any of the, connectors, buildingnormalization layers, services, or integrations described herein,including but certainly not limited to the connector 704, services706-710, a building normalization layer 712, and integrations 714-718,among other components, software, integrations, configuration settings,or any other software-related data described in connection with FIGS.1-12 .

At step 1810, the building system can a first instance of the one ormore gateway components to a first edge device and a second instance ofthe one or more gateway components to a second edge device. The firstedge device can measure a first condition of the building and the secondedge device can control the first condition or a second condition of thebuilding. The first edge device (e.g., a building device) can be asurveillance camera, and the first condition can be a presence of aperson in the building (e.g., within the field of view of thesurveillance camera). The second edge device can be a smart thermostat,and the second condition can be a temperature setting of the building.However, it should be understood that the first edge device and thesecond edge device can be any type of building device capable ofcapturing data relating to the building or controlling one or morefunctions, conditions, or other controllable characteristics of thebuilding. To deploy the gateway components, the building system canutilize one or more communication channels, which may be established viaa network of the building, to transmit the gateway components to thefirst edge device and the second edge device of the building.

Deploying the one or more gateway components can include installing orotherwise configuring the gateway components to execute at the firstedge device and the second edge device. Generally, the gatewaycomponents can be executed to perform any of the operations describedherein. Deploying the gateway components can include forming storingcomputer-executable instructions corresponding to the gateway componentsat the first edge device and the second edge device. In someimplementations, the particular gateway components deployed at the firstedge device and the second edge device can be selected based on theoperations, functionality, type, or processing capabilities of the firstedge device and the second edge device, among other factors as describedherein. Deploying the gateway components may include storing the gatewaycomponents in one or more predetermined memory regions at the first edgedevice and the second edge device (e.g., in a particular directory,executable memory region, etc.), and may include installing,configuring, or otherwise applying one or more configuration settingsfor the gateway components or for the operation of the first edge deviceand the second edge device. Gateway components can be deployed to thefirst edge device or the second edge device based on a communicationprotocol utilized by the first edge device or the second edge device.The building system can select gateway components to deploy to the firstedge device or the second edge device that include computer-executableinstructions that allow the first edge device and the second edge deviceto communicate with one another, and with other computing systems usingvarious communication protocols.

As described herein, the one or more gateway components can include anytype of software component, hardware configuration settings, orcombinations thereof. The gateway components may includeprocessor-executable instructions, which can be executed by the physicalgateway to which the gateway component(s) are deployed. The one or moregateway components can cause the physical gateway to communicate with abuilding device broker (e.g., the building device broker 1105) tofacilitate communication of data samples, conditions, operations, orsignals between the first edge device and the second edge device.Additionally, the one or more gateway components cause the first edgedevice or the second edge device to communicate data samples,operations, signals, or messages to the cloud platform. The gatewaycomponents may include adapters or integrations that facilitatecommunication with one or more other computing systems (e.g., a BMSserver, other building subsystems, etc.). The gateway components cancause the first edge device to communicate an event (e.g., a personentering the building, entering a room, or any other detected event,etc.) to the second edge device based on a rule being triggeredassociated with the first condition. The rule can be, for example, toset certain climate control settings (e.g., temperature, etc.) when aperson has been detected. However, it should be understood that any typeof user-definable condition can be utilized. The second instance of theone or more gateway components executing at the second edge device cancause the second edge device to control the second condition (e.g., thetemperature of the building, etc.) upon receiving the event from thefirst edge device (e.g., via the building device broker, via the cloudplatform, via direct communication, etc.). The building components mayinclude one or more building services that can generate additionalanalytics data based on detected events, conditions, or otherinformation gathered or processed by the first edge device or the secondedge device.

Configuration of Exemplary Embodiments

The construction and arrangement of the systems and methods as shown inthe various exemplary embodiments are illustrative only. Although only afew embodiments have been described in detail in this disclosure, manymodifications are possible (e.g., variations in sizes, dimensions,structures, shapes and proportions of the various elements, values ofparameters, mounting arrangements, use of materials, colors,orientations, etc.). For example, the position of elements may bereversed or otherwise varied and the nature or number of discreteelements or positions may be altered or varied. Accordingly, all suchmodifications are intended to be included within the scope of thepresent disclosure. The order or sequence of any process or method stepsmay be varied or re-sequenced according to alternative embodiments.Other substitutions, modifications, changes, and omissions may be madein the design, operating conditions and arrangement of the exemplaryembodiments without departing from the scope of the present disclosure.

The present disclosure contemplates methods, systems and programproducts on any machine-readable media for accomplishing variousoperations. The embodiments of the present disclosure may be implementedusing existing computer processors, or by a special purpose computerprocessor for an appropriate system, incorporated for this or anotherpurpose, or by a hardwired system. Embodiments within the scope of thepresent disclosure include program products comprising machine-readablemedia for carrying or having machine-executable instructions or datastructures stored thereon. Such machine-readable media can be anyavailable media that can be accessed by a general purpose or specialpurpose computer or other machine with a processor. By way of example,such machine-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROMor other optical disk storage, magnetic disk storage or other magneticstorage devices, or any other medium which can be used to carry or storedesired program code in the form of machine-executable instructions ordata structures and which can be accessed by a general purpose orspecial purpose computer or other machine with a processor. Wheninformation is transferred or provided over a network or anothercommunications connection (either hardwired, wireless, or a combinationof hardwired or wireless) to a machine, the machine properly views theconnection as a machine-readable medium. Thus, any such connection isproperly termed a machine-readable medium. Combinations of the above arealso included within the scope of machine-readable media.Machine-executable instructions include, for example, instructions anddata which cause a general purpose computer, special purpose computer,or special purpose processing machines to perform a certain function orgroup of functions.

Although the figures show a specific order of method steps, the order ofthe steps may differ from what is depicted. Also two or more steps maybe performed concurrently or with partial concurrence. Such variationwill depend on the software and hardware systems chosen and on designerchoice. All such variations are within the scope of the disclosure.Likewise, software implementations could be accomplished with standardprogramming techniques with rule based logic and other logic toaccomplish the various connection steps, processing steps, comparisonsteps and decision steps.

In various implementations, the steps and operations described hereinmay be performed on one processor or in a combination of two or moreprocessors. For example, in some implementations, the various operationscould be performed in a central server or set of central serversconfigured to receive data from one or more devices (e.g., edgecomputing devices/controllers) and perform the operations. In someimplementations, the operations may be performed by one or more localcontrollers or computing devices (e.g., edge devices), such ascontrollers dedicated to and/or located within a particular building orportion of a building. In some implementations, the operations may beperformed by a combination of one or more central or offsite computingdevices/servers and one or more local controllers/computing devices. Allsuch implementations are contemplated within the scope of the presentdisclosure. Further, unless otherwise indicated, when the presentdisclosure refers to one or more computer-readable storage media and/orone or more controllers, such computer-readable storage media and/or oneor more controllers may be implemented as one or more central servers,one or more local controllers or computing devices (e.g., edge devices),any combination thereof, or any other combination of storage mediaand/or controllers regardless of the location of such devices.

1-20. (canceled)
 21. A building system of a building, the buildingsystem comprising: one or more processors coupled to non-transitorymemory, the one or more processors configured to: determine that acomputing system of the building is in communication with at least onephysical building device configured to capture one or more data samples;identify one or more gateway components configured to facilitatecommunication with the at least one physical building device; andtransmit the one or more gateway components to the computing system incommunication with the at least one physical building device, causingthe computing system to communicate with the at least one physicalbuilding device to receive the one or more data samples and transmit theone or more data samples to a cloud platform.
 22. The building system ofclaim 21, wherein the one or more processors are further configured totransmit, to the computing system, an integration componentcorresponding to a communication protocol of the at least one physicalbuilding device, causing the computing system to communicate with the atleast one physical building device based on the integration component.23. The building system of claim 21, wherein the one or more processorsare further configured to determine that the computing system of thebuilding is in communication with the at least one physical buildingdevice based on a query transmitted to a network of the building. 24.The building system of claim 21, wherein the one or more processors arefurther configured to transmit configuration settings for the one ormore gateway components to the computing system.
 25. The building systemof claim 21, wherein the one or more processors are further configuredto transmit an additional gateway component to the computing system, theadditional gateway component configured to cause the computing system todetect and configure an additional physical building device incommunication with the computing system.
 26. The building system ofclaim 21, wherein at least one of the one or more gateway components isconfigured to cause the computing system to generate analytics databased on the one or more data samples.
 27. The building system of claim21, wherein the one or more processors are further configured to:determine that the computing system has available processing resourcescapable of executing the one or more gateway components; and transmitthe one or more gateway components to the computing system responsive todetermining that the computing system has available processing resourcescapable of executing the one or more gateway components.
 28. Thebuilding system of claim 27, wherein the one or more processors arefurther configured to: determine, based on a message received from thecomputing system, that the computing system does not include availableprocessing resources capable of executing the one or more gatewaycomponents; and transmit a signal to the computing system that causesthe computing system to terminate execution of the one or more gatewaycomponents.
 29. The building system of claim 28, wherein the one or moreprocessors are further configured to: identify a second computing systemof the building having available processing resources capable ofexecuting the one or more gateway components, responsive to determiningthat the computing system does not include available processingresources; and transmit the one or more gateway components to the secondcomputing system.
 30. A method, comprising: determining, by one or moreprocessors of a building system of a building, that a computing systemof the building is in communication with at least one physical buildingdevice configured to capture one or more data samples; identifying, bythe one or more processors, one or more gateway components configured tofacilitate communication with the at least one physical building device;and transmitting, by the one or more processors, the one or more gatewaycomponents to the computing system in communication with the at leastone physical building device, causing the computing system tocommunicate with the at least one physical building device to receivethe one or more data samples and transmit the one or more data samplesto a cloud platform.
 31. The method of claim 30, further comprisingtransmitting, by the one or more processors, to the computing system, anintegration component corresponding to a communication protocol of theat least one physical building device, causing the computing system tocommunicate with the at least one physical building device based on theintegration component.
 32. The method of claim 30, further comprisingdetermining, by the one or more processors, that the computing system ofthe building is in communication with the at least one physical buildingdevice based on a query transmitted to a network of the building. 33.The method of claim 30, further comprising transmitting, by the one ormore processors, configuration settings for the one or more gatewaycomponents to the computing system.
 34. The method of claim 30, furthercomprising transmitting, by the one or more processors, an additionalgateway component to the computing system, the additional gatewaycomponent configured to cause the computing system to detect andconfigure an additional physical building device in communication withthe computing system.
 35. The method of claim 30, wherein at least oneof the one or more gateway components is configured to cause thecomputing system to generate analytics data based on the one or moredata samples.
 36. The method of claim 30, further comprising:determining, by the one or more processors, that the computing systemhas available processing resources capable of executing the one or moregateway components; and transmitting, by the one or more processors, theone or more gateway components to the computing system responsive todetermining that the computing system has available processing resourcescapable of executing the one or more gateway components.
 37. The methodof claim 36, further comprising: determining, by the one or moreprocessors, based on a message received from the computing system, thatthe computing system does not include available processing resourcescapable of executing the one or more gateway components; andtransmitting, by the one or more processors, a signal to the computingsystem that causes the computing system to terminate execution of theone or more gateway components.
 38. The method of claim 37, furthercomprising: identify a second computing system of the building havingavailable processing resources capable of executing the one or moregateway components, responsive to determining that the computing systemdoes not include available processing resources; and transmit the one ormore gateway components to the second computing system.
 39. Anon-transitory computer-readable medium with instructions embodiedthereon that, when executed by one or more processors of a buildingsystem of a building, cause the one or more processors to performoperations comprising: determining that a computing system of thebuilding is in communication with at least one physical building deviceconfigured to capture one or more data samples; identifying one or moregateway components configured to facilitate communication with the atleast one physical building device; and transmitting the one or moregateway components to the computing system in communication with the atleast one physical building device, causing the computing system tocommunicate with the at least one physical building device to receivethe one or more data samples and transmit the one or more data samplesto a cloud platform.
 40. The non-transitory computer-readable medium ofclaim 39, wherein the operations further comprise transmitting, to thecomputing system, an integration component corresponding to acommunication protocol of the at least one physical building device,causing the computing system to communicate with the at least onephysical building device based on the integration component.